Spring BeanFactoryPostProcessor
2015-12-04 19:32
651 查看
Spring提供了一种叫做BeanFactoryPostProcessor的容器扩展机制,该机制允许我们实例化相应对象之前,对注册到容器的BeanDefinition所保存的信息做相应的修改。这就相当于在容器实现的第一阶段最后加入一道工序,让我们对最终的BeanDefinition做一些额外的操作,比如修改其中bean定义的某些属性,为bean定义增加其他信息等。
如果要自定义实现BeanFactoryPostProcessor,通常我们需要实现org.springframework.beans.factory.config.BeanFactoryPostProcessor接口。同时因为一个容器可能拥有多个BeanFactoryPostProcessor,这个时候可能需要实现类同时实现Spring的org.springframework.core.Ordered接口。但是,因为Spring已经提供了几个现成的BeanFactoryPostProcessor实现类。所以,大多时候,我们很少自己去实现某个BeanFactoryPostProcessor。
我们可以通过两种方式来应用BeanFactoryPostProcessor,分别针对基本的IoC容器BeanFactory和较为先进的容器ApplicationContext。
对于BeanFactory来说,我们需要用手动方式应用所有的BeanFactoryPostProcessor。
对于ApplicationContext来说,情况看起来要好得多。因为ApplicationContext会自动识别配置文件中的BeanFactoryPostProcessor并应用它。所以,相对于BeanFactory,在ApplicationContext中加载并应用BeanFactoryPostProcessor,仅需要在XML配置文件中将这些BeanFactoryPostProcessor简单配置一下即可。
如果要自定义实现BeanFactoryPostProcessor,通常我们需要实现org.springframework.beans.factory.config.BeanFactoryPostProcessor接口。同时因为一个容器可能拥有多个BeanFactoryPostProcessor,这个时候可能需要实现类同时实现Spring的org.springframework.core.Ordered接口。但是,因为Spring已经提供了几个现成的BeanFactoryPostProcessor实现类。所以,大多时候,我们很少自己去实现某个BeanFactoryPostProcessor。
我们可以通过两种方式来应用BeanFactoryPostProcessor,分别针对基本的IoC容器BeanFactory和较为先进的容器ApplicationContext。
对于BeanFactory来说,我们需要用手动方式应用所有的BeanFactoryPostProcessor。
对于ApplicationContext来说,情况看起来要好得多。因为ApplicationContext会自动识别配置文件中的BeanFactoryPostProcessor并应用它。所以,相对于BeanFactory,在ApplicationContext中加载并应用BeanFactoryPostProcessor,仅需要在XML配置文件中将这些BeanFactoryPostProcessor简单配置一下即可。
相关文章推荐
- java实现DES加密和解密
- Caused by: java.lang.IllegalStateException: getOutputStream() has already been called for this respo
- Eclipse搭建SSH(Struts2+Spring3+Hibernate3)框架项目教程及增删改查经验总结
- 深入分析JavaWeb Item6 -- servletConfig 与servletContext详解
- springmvc 各种注解及对象理解
- java 动态代理模式
- Could not open JPA EntityManager for transaction; nested exception is javax.pers
- 关于Myeclipse中添加onsubmit(return *)提示错误无返回值解决办法
- Java中的字符串常量池详细介绍
- [Java基础知识]开发环境以及JDK的安装与配置
- java基础
- Java 常用包简介
- 深入研究java.lang.Runtime类
- java项目怎么打成可运行的jar包
- java中的tuple实现
- 怎样成为一个高级JAVA工程师
- Eclipse 最牛的几款插件
- 浅谈java volatile
- Java编程的环境变量配置
- RxJava教程(三)