javascript
(转) Spring读书笔记-----Spring的Bean之配置依赖
前一篇博客介紹了Spring中的Bean的基本概念和作用域(Spring讀書筆記-----Spring的Bean之Bean的基本概念 ),現在介紹Spring Bean的基本配置。
????????? 從開始我們知道Java應用中各組件的相互調用的實質可以歸納為依賴關系。根據注入方式的不同,Bean的依賴注入可以分為兩種形式:
????????? 1、? 屬性:通過<property …/>元素配置,對應設置注入。
????????? 2、? 構造器參數:通過<constructor-arg…/>元素配置,對應構造注入。
????????? 不管是屬性,還是構造器參數,都視為Bean的依賴,接受Spring容器管理,依賴關系的值要么是一個確定的值,要么是Spring容器中的其他Bean的引用。
????????? 在一般情況下,我是不應該在配置文件中管理普通屬性的引用,通常只是用配置文件管理容器中的Bean實例的依賴關系。
????????? Spring在實例化容器時,會校驗BeanFactory中每一個Bean的配置。這些校驗包括:
????????? Bean引用的依賴Bean是否指向一個合法的Bean。
????????? Bean的普通屬性值是否獲得一個有效值。
??????? 對于singleton作用域的Bean,如果沒有強行取消其預初始化的行為,系統會在創建Spring容器時預初始化所用singleton Bean,與此同時,該Bean所依賴的Bean也被一起實例化。
????????? BeanFactory與ApplicationContext實例化容器中的Bean的時機也是不同的:BeanFactory等到程序需要Bean實例時才創建Bean,而ApplicationContext是在創建ApplicationContext實例時,會預初始化容器中的全部Bean。同時在創建BeanFactory時不會立即創建Bean實例,所以有可能程序可以正確地創建BeanFactory實例,但是當請求Bean實例時依然拋出一個異常:創建Bean實例或注入它的依賴關系時出現錯誤。所以當配置錯誤的延遲出現,會給系統帶來一些不安全的因素。而ApplicationContext則是默認預初始化所有singleton作用域的Bean,所以ApplicationContext實例化過程比BeanFactory實例化過程的時間和內存開銷大,但是一旦創建成功,應用后面的響應速度會非常快,同時可以檢驗出配置錯誤,故一般都是推薦使用ApplicationContext作為Spring容器。
?????????? 其實我們可以指定lazy-int=”true”來強制取消singleton作用域的Bean的預初始。這樣該Bean就不會隨著ApplicationContext啟動而預實例化了。
????????? Spring可以為任何java對象注入任何類型的屬性,只要改java對象為該屬性提供了對應的setter方法即可。
[html] view plaincopyprint??
????????? Spring會為<bean…/>元素創建一個java對象,一個這樣的java對象對應一個Bean實例,對于如上代碼,Spring會采用如下形式來創建Java實例。
?
[java] view plaincopyprint?????????? 創建該實例后,Spring就會遍歷該<bean../>元素的所有<property…/>子元素。<bean…/>元素每包含一個<property…/>子元素,Spring就會為該Bean實例調用一次setter方法。類似于下面程序:
[java] view plaincopyprint?
????????? 對于使用<constructor-arg…/>元素來指定構造器注入,Spring不會采用默認的構造器來創建Bean實例,而是使用特定的構造器來創建該Bean實例。
?
????????? 針對上面的代碼,Spring會采用類似如下的代碼來創建Bean實例:
[java] view plaincopyprint?
????????? 上面的程序只是一個實例,實際上Spring還需要根據<property…/>元素、<contructor-arg../>元素所使用value屬性,ref屬性等來判斷需要注入的到底是什么數據類型,并要對這些值進行合適的類型轉換,所以Spring的實際處理過程會更加復雜。
?
??????????? 讀李剛《輕量級Java EE企業應用實戰》
轉載于:https://www.cnblogs.com/zzzzw/p/4580969.html
總結
以上是生活随笔為你收集整理的(转) Spring读书笔记-----Spring的Bean之配置依赖的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 做梦梦到公鸡和母鸡是什么意思
- 下一篇: 梦到爸爸生重病是什么预兆