spring学习之---两种后处理器
来源:互联网 发布:租赁软件哪个好 编辑:程序博客网 时间:2024/05/29 14:24
1.Bean后处理器
Bean后处理器是一种特殊的Bean,这种特殊的Bean并不对外提供服务,它甚至可以无须id属性,它主要负责对容器中的其他Bean执行后处理,例如为容器中的Bean生成代理等。
Bean后处理器会在Bean实例创建成功之后,对Bean实例进行进一步的增强处理。
Bean后处理必须实现BeanPostProcessor接口,有如下两个方法:
- Object postProcessBeforeInitialization(Object bean,String name) throws BeansException。
- Object postProcessAfterInitialization(Object bean,String name) throws BeansException。
这两个方法会对容器的Bean进行后处理,会在目标Bean初始化之前、初始化之后分别被回调。
public class MyBeanPostProcessor implements BeanPostProcessor{ public Object postProcessorBeforeInitialization(Object bean,String beanName){ System.out.println("Bean后处理器在初始化之前对" + beanName + "进行增强处理"); return bean; } public Object postProcessorAfterInitialization(Object bean,String beanName){ System.out.println("Bean后处理器在初始化之后对" + beanName + "进行增强处理"); return bean; } }
当spring容器实例化Bean实例之后,就会依次调用Bean后处理器的两个方法对Bean实例进行增强处理。
在配置文件中配置Bean后处理器和配置普通Bean完全一样,但是通常无须为Bean后处理器指定id属性。
Bean后处理两个方法的回调时机:注入依赖关系->回调postProcessBeforeInitialization进行后处理->调用afterPropertiesSet->调用init-method方法->回调postProcessAfterInitialization进行后处理。
使用BeanFactory作为spring容器,则必须手动注册Bean后处理器,而使用ApplicationContext则会自动注册Bean后处理器。
两个常用的后处理器:
- BeanNameAutoProxyCreator:根据Bean实例的name属性,创建Bean实例的代理。
- DefaultAdvisorAutoProxyCreator:根据提供的Advisor,对容器中的所有Bean实例创建代理。
2.容器后处理器
Bean后处理器负责处理容器中的所有Bean实例,而容器后处理器则负责处理容器本身。
容器后处理器必须实现BeanFactoryPostProcessor接口,实例该接口必须实现如下方法:
- postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory):只是对spring容器进行后处理。
容器后处理器通常用于对spring容器进行处理,并且总是在容器实例化任何其他的Bean之前,读取配置文件的元数据,并有可能修改这些元数据。
3.属性占位符配置器
spring提供了PropertyPlaceholderConfigurer,它是一个容器后处理器,负责读取Properties属性文件里的属性值,并将这些属性值设置成spring配置文件的数据,可以将spring配置文件中的部分数据放在属性文件中设置。
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"> <list> <value>dbconn.properties</value> ... </list> </property> </bean> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDateSource" destory-method="close" p:driverClass="${jdbc.driverClassName}"p:jdbcUrl="${jdbc.url}" p:user="${jdbc.username}" p:password="${jdbc.password}" /> </bean> dbconn.properties jdbc.driverClassName=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/ jdbc.user=root jdbc.password=0408
采用属性占位符的配置方式,可以支持使用多个属性文件,通过这种方式,可将配置文件分割成多个属性文件,从而降低修改配置文件产生错误的风险。
<context:property-placeholder location="classpath:dbconn.properties"/>元素是对PropertyPlaceholderConfigurer的简化配置
4.重写占位符配置器
PropertyOverrideConfigurer是spring提供的容器后处理器,它的属性文件指定的信息可以直接覆盖spring配置文件中的元数据。可以认为spring配置信息是XML配置文件和属性文件的总和,当XML配置文件和属性文件指定的元数据不一致时,属性文件的信息获胜。
使用PropertyOverrideConfigurer的属性文件,每条属性应保持如下格式:
beanId.property=value
<context:property-override location=""/>元素是PropertyOverrideConfigurer的简化配置
- spring学习之---两种后处理器
- Spring的两种后处理器
- Spring-----13、两种后处理器
- Spring 的两种后处理器
- spring之创建spring后处理器
- springmvc学习之异常处理器
- spring-mvc入门之映射处理器
- spring-mvc入门之映射处理器
- Spring MVC之处理器映射器
- spring学习笔记:spring mvc处理器映射(handlerMapping)
- spring学习笔记:spring mvc处理器映射(handlerMapping)
- Spring框架学习【Spring具体事务处理器的实现】
- 拨开云雾学习之处理器初探
- ARM处理器学习之--GPIO操作篇
- TQ2440,学习笔记之ARM处理器寄存器
- Spring学习记录—容器后处理器和Bean后处理器
- Spring MVC学习(五)-------处理器拦截器详解
- Spring 学习笔记 (II) 之后处理器和Resource
- Mina框架构建一个HelloWorld
- 正则表达式之过滤html标签
- mybatis-plus自动生成代码不覆盖生成,若存在就不生成,多模块就生成到相应的模块
- iOS -NSUserDefault详解
- 基于SSM框架的人事系统搭建(一)
- spring学习之---两种后处理器
- Day3
- 推荐一款提供web界面的分布式crontab管理软件
- linux下c语言入门03 makFile的编写
- iOS实现UIImageView透明区域点击事件穿透
- asList存在的问题
- 36.判断数独是否合法
- urlib2下载网页的三种方法
- HTTP协议—— 简单认识TCP/IP协议