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在前面已经说过。
注入的方式有两种,一种是设值注入,另一种是构造注入。
查看本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/Java/