Spring中Bean的管理問題


首先,配置文件中定義的bean並不是都在啟動時實例化。


<bean id="accountService" class="com.foo.DefaultAccountService" scope="singleton"/>
注意bean有一個屬性scope,只有在scope沒有配置或配置為如上時,啟動時才實例化。(如果一個singleton的bean依賴一個prototype的bean,那么這個prototype的bean在singleton的bean實例化時也會實例化。
如果定義為scope="prototype"那么只有在這個bean被使用時,才實例化,而且每次都是一個新對象,多例。


其次,在配置文件中聲明bean使得spring可以管理這些bean,比如聲明式事物功能,就需要你的bean在配置文件中配置。在實例化時spring會為你聲明的bean生成一個代理對象,代理對象在調用bean的方法前后加上事務控制邏輯。
備注:spring管理bean這樣在bean初始化過程中,spring可以做很多事情,比如你寫一個pojo,spring通過配置就能讓他成為rmi,就是在實例化過程,對這個pojo做了更多的處理,不只是簡單的new一個對象出來。
在比如只有spring管理的bean才支持spring的AOP機制。可以使用Aspectj和spring集成,對非spring管理的bean施加AOP


再次,減少代碼中依賴耦合。

同樣的在配置文件中我們可以ref另外一個bean,這樣做又是為什么呢?(我們同樣可以使用時new一個這個實例)
回答:
把依賴關系定義在配置文件中。
不要再代碼中表現依賴關系,這樣在依賴關系有變化的情況下,可以通過配置文件的修改達到目的,而不需要修改代碼。

 


免責聲明!

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



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