Spring 的两种后处理器

来源:互联网 发布:2015年8月进出口数据 编辑:程序博客网 时间:2024/05/15 14:15

Spring 容器允许开发者使用两种后处理器扩展 IoC 容器,这两种后处理器可以后处理 IoC 容器本身,或者对容器中所有的 Bean 进行后处理。

Spring 提供的两种常用的后处理器:
① Bean 后处理器
② 容器后处理器

1、Bean 后处理器

Bean 后处理器是一种特殊的 Bean ,并不对外提供服务且必须实现 BeanPostProcessor 接口。如果使用 ApplicationContext 作为 Spring 的容器,Spring 容器会自动检测容器中的所有 Bean, 如果发现某个 Bean 类实现了 BeanPostProcessor 接口, ApplicationContext 会自动将其注册为 Bean 的后处理器。在自定义 Bean 容器处理器时最好都考虑实现 Ordered 接口,这样可以通过配置 order 属性来指定 Bean 后处理器的执行顺序。

bean 后处理器:

/** * Created by Hinbo on 2016/9/7. * 简单的 Bean 后处理器 */public class MyBeanPostProcessor implements BeanPostProcessor {    /**     * 对容器中的 bean 实例进行后处理     * @param bean 需要进行后处理的原 Bean 实例     * @param beanName 需要进行后处理的 Bean 的配置 id     * @return 返回后处理完成后的 bean     * @throws BeansException     */    public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {        System.out.println("bean 后处理器在初始化之前对"+ beanName+"进行增强处理。。。");        return bean;    }    public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {        System.out.println("bean 后处理器在初始化之后对"+ beanName+"进行增强处理。。。");        return bean;    }}

配置 Bean 的后处理器:

<!-- 配置 Bean 后处理器 --><bean class="com.sunsharing.springDemo.util.MyBeanPostProcessor"/>

容器中一旦注册了 Bean 后处理器,Bean 后处理器就会自动启动,在容器中的每个 Bean 创建时自动工作。

2、容器后处理器

Bean 后处理器负责处理容器中的所有 Bean 实例,而容器处理器负责处理容器本身。容器后处理器必须实现 BeanFactoryPostProcessor 接口。

/** * Created by Hinbo on 2016/9/7. * 容器处理器 */public class MyBeanFactoryPostProcessor implements BeanFactoryPostProcessor {    /**     * 对 Spring 进行后处理     * @param beanFactory Spring 容器本身     * @throws BeansException     */    public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {        System.out.println("Spring 的容器后处理器:"+beanFactory);    }}

配置:

<!-- 配置容器后处理器 --><bean class="com.sunsharing.springDemo.util.MyBeanFactoryPostProcessor"/>

如果需要,程序可以配置多个容器后处理器,多个容器后处理器可以设置 order 属性来控制容器后处理器的执行顺序,为了给容器后处理器指定 order 属性,则要求容器后处理器必须实现 Ordered 接口。

0 0
原创粉丝点击