读书人

Spring 备忘 (4) - Spring 后处理器

发布时间: 2013-08-01 15:23:18 作者: rapoo

Spring 备忘 (四) -- Spring 后处理器

Spring 备忘 (四) -- Spring 后处理器

?

20. Spring 后处理器 - Bean 后处理器

? ? bean后处理器,是一种特殊的bean,这种bean不对外提供服务,甚至无需id属性,

? ? 负责对其容器中其他bean提供后处理.

? ??

? ? 这种bean是对所有的(或一大批)其他bean进行处理,

? ? 区别于:

? ? ? bean单独配置init-method或者实现InitializingBean(仅仅对当前的bean做处理)

? ? ? bean单独配置destory-method属性 或者 实现 DisposableBean接口(仅仅对当前的bean做处理)

? ??

? ? bean后处理器必须实现 BeanPostProcessor接口,包含下面方法:

? ? Object postProcessBeforeInitialization(Object bean,String name) Throws BeansException

? ? Object postProcessAfterInitialization(Object bean,String name) Throws BeansException

? ? 第一个参数是即将进行后处理的bean实例,第二个参数是该bean的名字

? ? 这两个方法会在bean初始化前,后分别被调用

? ? 一个类MyBeanPostProcessor实现了BeanPostProcessor接口

? ??

? ? 配置片段:

? ? <bean id="steelAxe" />

? ??

? ? <!-- Chinese类还实现了InitializingBean 接口 -->

? ? <bean id="chinese" init-method="init">

? ? ? <!-- 设置注入 -->

? ? ? <property name="axe" ref="steelAxe" />

? ? ? <property name="name" value="依赖注入的值" /> ?

? ? </bean>

? ??

? ? <!-- 配置bean的后处理器可以无需指定id,但这里还是指定了 -->

? ? <bean id="beanPostProcessor" />

? ??

? ? 几种方法的调用顺序:

? ? (1) 注入依赖关系(set方法之类的)

? ? (2) 调用后处理器接口方法 postProcessBeforeInitialization

? ? (3) 调用具体Bean的InitializingBean接口方法afterPropertiesSet()

? ? (4) bean配置的init-method中指定的方法

? ? (5) 调用具体Bean的DisposableBean接口方法destroy()

? ? (6) 调用bean配置的destroy-method中指定的方法(P599)

? ? (7) 调用Bean后处理器接口的 postProcessAfterInitialization(P616)

? ??

? ??

? ? 使用BeanFactory作为Spring容器需要手动注册Bean后处理器,

? ? 使用ApplicationContext则会自动注册Bean后处理器.

? ??

21. Spring 后处理器 -- 容器 后处理器

? ??

? ? 容器后处理器处理容器本身.

? ? 实现BeanFactoryPostProcessor接口,方法为:

? ? postProcessorBeanFactory(ConfigurableListableBanFactory beanFactory)

? ? 该方法对Spring容器进行后处理,并不完全替换容器,所以不需要返回值.

? ??

? ? 使用BeanFactory作为Spring容器需要手动注册 容器 后处理器,

? ? 使用ApplicationContext则会自动注册 容器 后处理器.

? ??

? ? 配置: 将 容器 后处理器,作为普通bean 配置到xml配置文件中.(P618)

? ??

? ? 两种容器配置器(P620):

? ? ? 属性占位符配置器(PropertyPlaceholderConfigurer)

? ? ? 重写占位符配置器(PropertyOverrideConfigurer)

? ??

? ??

? ??

??

读书人网 >编程

热点推荐