1.Spring的加載(實例化)
如果不與Struts整合的話,Spring的加載是在Web程序的web.xml中配置的,在web.xml 中有兩種選擇,一種是ContextLoaderListener,另一種是ContextLoaderServlet。
如果與Struts進行整合,則Spring的加載是在struts-config.xml中配置的。
2.容器後處理器
在容器實例化之後可以對Spring容器進行一些操作,這個通過實現接口BeanFactoryPostProcessor接口來實現,該接口有一個方法void postProcessorBeanFactory(ConfigurableListableBeanFactory beanFactory)。這個接口有兩個很有用的實現類,是Spring已經實現好的,它們是PropertyPlaceholderConfigurer(屬性占位符配置器)和PropertyOverrideConfigurer(另一種屬性占位符配置器)。
3.與Spring容器的交互
對容器的處理操作結束以後,我們就能和Spring容器進行交互了,我們可以實現FactoryBean,FactoryBeanAware接口等方法獲取BeanFactory實例,然後用之。
4.配置bean和依賴關系
這包括配置依賴,注入屬性值,注入field值,注入方法返回值,bean的繼承。這些配置的過程中還包括配置強制初始化bean(depends-on),自動裝配(autowire),依賴檢查(dependency-check),這三項都是bean的屬性(不是子元素)。
5.對容器中的bean實例化的管理——bean後處理器
bean後處理器必須實現BeanPostProcessor接口,該接口中有兩個方法,一個是Object postProcessBeforeInitialization(Object bean,String name) throws BeansException 和 Object postProcessAfterInitialization(Object bean,String name) throws BeansException,前一個方法是在實例化之前對該bean進行處理,後一個方法是在實例化之後對該bean進行處理。
6.對bean生命周期的管理
對bean生命周期的管理有兩個時機:一,在注入依賴關系之後;二,在即將銷毀bean之前。
在注入依賴關系之後管理有兩種方式:一,使用init-method屬性;二,InitialingBean接口,它只有一個void afterPropertiesSet() throws Exception方法。
在bean銷毀之前管理時也有兩種方式:一,使用destroy-method屬性;二,DisposableBean接口,它只有一個void destroy() throws Exception方法。
這裡要說明的是,如果同時配了屬性,也實現了方法。則先執行接口的方法,再執行配置的屬性指定的方法。
如果既用了bean後處理器,有對bean的生命周期進行管理,則執行的順序是:Object postProcessBeforeInitialization(Object bean,String name) throws BeansException,void afterPropertiesSet() throws Exception,init-method,Object postProcessAfterInitialization(Object bean,String name) throws BeansException。
7.創建bean實例
創建bean實例有三種方法:
1.調用構造器創建一個bean實例。
2.BeanFactory調用某個類的靜態工廠方法創建bean。
3.BeanFactory調用實例工廠方法創建bean。
8.依賴注入
注入的順序是先實例化本bean(它需要容器向它注入其它的bean),在實例化用來向本bean注入的bean,然後執行注入。當然,這種順序是可以改變的,可以用強制實例化bean來改變這種順序。強制實例化bean在前面已經說過。
注入的方式有兩種,一種是設值注入,另一種是構造注入。
查看本欄目