依賴注入,是Spring的核心機制,可以使Spring的Bean以配置文件的形式組織在一起,而不是以硬編碼的形式耦合在一起。
依賴注入的方式通常有兩種:
第一:設值注入
是通過Setter方法傳入被調用者的實例,這種方式簡單,直觀,因此在Spring的依賴注入里面得到大量的使用。
第二:構造注入
所謂構造注入,主要是指通過構造函數來完成依賴關系的設定,而不是通過Setter方法。
Bean與BeanFactory的比較:
一、Bean是Spring管理的基本單位,在Spring的J2EE應用當中,所有的組件都是Bean,Bean包括數據源,Hibernate的SessionFactory以及事務管理器。
二、BeanFactory是Spring容器的最基本接口,BeanFactory負責創建,配置及管理Bean,它有個子接口:ApplicationContext,因此也被稱為Spring上下文,另外,Spring容器還負責管理Bean與Bean之間的依賴關系。
<beans/>元素是Spring配置文件的根元素,<bean/>是<beans/>的子元素,<beans/>可以定義多個<bean/>元素,<bean/>定義一個<bean>,每個<bean>是接受Spring容器里的Java實例:
在定義<bean>時,必須定義兩個元素:
一、id :確定該<bean>的唯一標識符
二、class:指定該<bean>的實現類,在這里不能是接口。通常情況下,Spring都會使用New關鍵字直接創建該<bean>的實例,因此,這里必須提供Bean實現類的類名。
在Spring集中管理bean的實例化時,bean實例可以通過BeabFactory的GetBean(String Beanid)方法獲得,此時,BeanFactory將變成簡單工廠里的工廠,程序只需要獲取BeanFactory的引用,即可獲得Spring容器管理全部實例的引用,從而是程序不需要實現與具體實例的實現的耦合。在具體的J2EE應用中,當應用啟動時,會自動創建Spring容器的實例,組件之間直接以依賴注入的方式耦合,甚至無需訪問Spring容器。
<bean>在Spring容器中的兩種基本行為:
一、 singleton:單態行為
二、 non-singleton或者prototype:原型