對於spring實現bean信息定義目標-基於三種方法的思考

對於spring實現bean信息定義目標,spring提供了三種方式: 基於XML 基於註解 ,以及 基於java類

本人是使用的基於註解的形式比較多的,一直沒有使用過基於xml和基於java類的,因此不少地方仍是不會的: java

經過資料,比較了三種方式的在不一樣環境的優劣 spring

  • 對於xml文件的: 
  1. 適合於bean實現類來源於第三方類庫,如DataSource , JdbcTemplate等,由於如法在類中標註註解,全部經過xml文件進行註解是比較適合的一種方式。
  2. 另外,命名空間的配置,如aop context 等 只能基於xml配置,,,,
  • 對於註解的配置: 
  1. bean的實現類就在當前項目開發中,能夠直接在java類中使用基於註解的配置


  • 對於java類的配置:  
  1. 基於Java類配置的優點在於能夠經過代碼方式控制bean初始化的整個邏輯,全部若是實例化bean的邏輯比較複雜,則比較適合使用基於Java類配置的方式。。。。。。。

對於三種形式的比較

  • 對於bean的定義
  1. 基於xml: 在xml文件中經過<bean>元素定義bean   例如  <bean class="com.boss.test"/>
  2. 基於註解:經過註解 @Compoent 或者衍型類(@Repository,@Service 以及 @Controller)定義bean 
  3. 基於java類配置:因爲使用狀況很少,就不作介紹了。。。。。。
  • 對於bean的名稱
  1. 基於XML 經過<bean> 的id或者name屬性定義
  2. 基於註解: 經過註解的value屬性
  • 對於bean的注入 
  1. 基於XML  經過<property>子元素或者經過p命名空間的動態屬性  p:userDao-ref="userDao"
  2. 基於註解:  經過@Autowired
  • 對於bean生命過程方法
  1. 基於xml  init-method  和  destroy-method 屬性指定bean實現類的方法名,最多隻能指定一個初始化方法和一個銷燬方法。
  2. 基於註解: 經過@PostConstruct 和 @PreDestroy 註解來指定初始化或者銷燬方法。 能夠定義任意多個方法。
  • 對於bean做用範圍
  1. 基於XML   scope屬性
  2. 基於註解:  @Scope("")
  • 對於bean延遲初始化
  1. 基於XML 經過lazy-init 屬性指定,默認是default  繼承於beans的default-lazy-init設置,該值默認爲false
  2. 基於註解  @Lazy
相關文章
相關標籤/搜索