spring-bean屬性配置解析


autowire屬性值有

byName 根據Bean定義時的“id"屬性上指定的別名與Setter名稱是否一致進行自動裝配

byType 根據PoJo的setXXX()方法所接受的類型判斷bean定義文件是否定義有類似的類型對象進行自動裝配

constructor Spring容器比對容器中的Bean實例類型及相關的構造方法上的參數類型是否符合進行自動裝配

autodetect 先進行constructor自動裝配,若缺省,則進行byType自動裝配

no不進行自動裝配

 

depends-on

若A depends-on B 意思是實例化A之前必須先實例化B,但A不需要持有B的實例

 

abstract屬性值

false默認

ture表示抽象Bean,ApplicationContext預初始化時忽略所有抽象Bean定義

 

parent   表示該Bean為子Bean,其值指向父Bean,重用父Bean已實現的依賴

 

dependency-check屬性值

simple 只檢查簡單的屬性是否完成依賴關系

objects 檢查對象類型的屬性是否完成依賴關系

all檢查全部的屬性是否完成依賴關系

none默認值,表示不檢查依賴性


singleton屬性值指定此Java Bean是否采用單例(Singleton)模式 

false則通過BeanFactory獲取此Java Bean實例時,BeanFactory每次都將創建一個新的實例返回。

true(默認) 則在BeanFactory作用范圍內,只維護此Java Bean的一個實例,代碼通過BeanFactory獲得此Java Bean實例的引用。

 

init-method 初始化方法,此方法將在BeanFactory創建JavaBean實例和屬性set注入之后,在向應用層返回引用之前執行。一般用於一些資源的初始化工作。

 

destroy-method 銷毀方法。此方法將在BeanFactory銷毀的時候執行,一般用於資源釋放。

 

lazy-init屬性值

true 延遲加載,也就是IoC 容器將第一次被用到時才開始實例化

false默認

 

factory-bean通過實例工廠方法創建bean,class屬性必須為空,factory-bean屬性必須指定一個bean的名字,這個bean一定要在當前的bean工廠或者父bean工廠中,並包含工廠方法。而工廠方法本身通過factory-method屬性設置。

 

factory-method 定義工廠方法,若是class屬性指向工廠類,該工廠類包含的工廠方法須是static

scope屬性值

 

scope可以取值: 
 * singleton:每次調用getBean的時候返回相同的實例.這個是默認,也就是單實例
 * prototype:每次調用getBean的時候返回不同的實例.這個是多實例

 

還可取值request、session、global session等(不常用)

 

具體的用法如下

<bean id="userDao" class="com.test.dao.impl.UserDAOImpl" scope="singleton"/>
 <bean id="userService" class="com.test.service.impl.UserServiceImpl" scope="prototype">
  <property name="userDao" ref="userDao"/>
 </bean>

這個怎么需要看你具體的時機...如果你的bean是無狀態的.那么單實例就可以了...如果Bean是有狀態的,那么你最好設置成多實例的.因為這樣可以解決線程安全問題.

id: Bean的唯一標識名。它必須是合法的XML ID,在整個XML文檔中唯一。

name: 用來為id創建一個或多個別名。它可以是任意的字母符合。多個別名之間用逗號或空格分開。

class: 用來定義類的全限定名(包名+類名)。只有子類Bean不用定義該屬性

 


 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM