Spring的IOC

      spring的IOC:Inversion of control控制反轉。這個字面有點拗口,控制反轉,其實就是把javaBean的創建,初始化,銷燬等工作交給Spring容器來完成。原始的做法一個javaBean通過編譯成java的字節碼,通過虛擬機加載方式來完成方法的調用。但現在有了spring容器,這些工作都不要做了。我們只要javaBean,然後通過spring的applicationContext.xml或bean.xml這個配置文件,來管理,就可以完成這個bean的創建等工作。

      spring容器中bean創建

      有三種方案能完成bean的創建,利用默認的構造函數來創建,這種方式最爲常用;利用靜態的工廠方法;利用實例工廠方法。

      bean的創建時機:1.默認情況下,在spring啓動的時候,會創建spring容器中的所有單利的bean。在spring容器啓動的時候,可以檢查錯誤,但是如果bean的屬性有數據,會過早的加載到內存中。所以如果bean中有了數據,應把數據的對象聲明放入方法中。2.如果在spring的配置文件中有lazy-init爲ture。則在spring啓動的時候不會馬上加載,而是到context.getBean("beanId");時才創建。這種做法有一種缺點:在spring容器啓動的時候不會檢查出錯誤的。

      對象的作用域:在配置文件中有scope屬性。1、如果該屬性值爲singleton。spring產生的bean只有一個實例。處於單利模式的bean的創建,初始化,銷燬都是有Spring容器所管理。容易關閉時執行銷燬方法。2.如果該屬性是“prototype‘.該對象是以多例形式創建的。spring容易負責執行該對象的創建,初始化,而銷燬工作則有程序員自己來做。無論該bean的lazy-init的值爲什麼。都是在context.getBean時創建對象。

      init和destroy方法

      這兩個方法同樣是在配置文件可以配,init-method和destroy-method。init方法是在構造函數執行完畢後執行這個方法。destroy在spring容器銷燬後才執行該方法。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章