19.Spring后处理器
2015-06-23 08:58
429 查看
Spring两种后处理器(用于对Bean或者IOC容器增强功能):“Bean后处理器”和“容器后处理器”。
1、Bean后处理器
Bean后处理器是一种特殊的Bean,不对外提供服务,甚至无需id,它主要对容器中其他Bean执行后处理操作。例如:为容器中的目标Bean生成代理等。
Bean后处理器必须实现BeanPostProcessor接口,其包含以下两个方法:
Object postProcessBeforeInitialization(Object bean, String name) throws BeanException;
Object postProcessAfterInitialization(Object bean, String name) throws BeanException;
这两个方法会对容器中的Bean进行后处理,会在目标Bean初始化之前和初始化之后被回调,对Bean实例进行增强处理。
Java代码如下:
public class BeanProcessor implements BeanPostProcessor{
public Object postProcessorBeforeInitialization(Object bean, String name)throws BeanException{
System.out.println("bean后处理在bean初始化之前调用!");
}
}
XML配置如下:
<bean class="BeanProcessor"/>
2、容器后处理器
容器后处理对容器功能性能强,必须实现BeanFactoryPostProcessor接口。
实现方法:postProcessorBeanFactory(ConfigurableListableBeanFactory config);
Spring常用的容器后处理Bean如:
PropertyPlaceholderconfigure:属性占位符配置器;
PropertyOverrideConfigure:重写占位符配置器;
CustomScopeConfigure:自定义自动装配的配置器;
CustomAutowireConfigure:自定义作用于的配置器。
示例Spring使用属性占位符配置器:
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigure">
<property name="locations">
<list>
<value>dbconn.properties</value>
<value>.......</value>
</list>
</property>
</bean>
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${jdbc.driverClass}"/>
<property name="jdbcUrl" value="${jdbc.url}"/>
<property name="user" value="${jdbc.name}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
jdbc.properties:
jdbc.driverClass=com.mysql.jdbc.driver
jdbc.url=jdbc:mysql://localhost:3306/javaee
jdbc.name=root
jabc.password=1111
Spring的重写占位符配置器配置如下:
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigure">
<property name="locations">
<list>
<value>dbconn.properties</value>
<value>.......</value>
</list>
</property>
</bean>
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"/>
jdbc.properties:
dataSource.driverClass=com.mysql.jdbc.driver
dataSource.url=jdbc:mysql://localhost:3306/javaee
dataSource.name=root
dataSource.password=1111
重写占位符配置器属性文件里属性的格式必须是:beanName.property=value
1、Bean后处理器
Bean后处理器是一种特殊的Bean,不对外提供服务,甚至无需id,它主要对容器中其他Bean执行后处理操作。例如:为容器中的目标Bean生成代理等。
Bean后处理器必须实现BeanPostProcessor接口,其包含以下两个方法:
Object postProcessBeforeInitialization(Object bean, String name) throws BeanException;
Object postProcessAfterInitialization(Object bean, String name) throws BeanException;
这两个方法会对容器中的Bean进行后处理,会在目标Bean初始化之前和初始化之后被回调,对Bean实例进行增强处理。
Java代码如下:
public class BeanProcessor implements BeanPostProcessor{
public Object postProcessorBeforeInitialization(Object bean, String name)throws BeanException{
System.out.println("bean后处理在bean初始化之前调用!");
}
}
XML配置如下:
<bean class="BeanProcessor"/>
2、容器后处理器
容器后处理对容器功能性能强,必须实现BeanFactoryPostProcessor接口。
实现方法:postProcessorBeanFactory(ConfigurableListableBeanFactory config);
Spring常用的容器后处理Bean如:
PropertyPlaceholderconfigure:属性占位符配置器;
PropertyOverrideConfigure:重写占位符配置器;
CustomScopeConfigure:自定义自动装配的配置器;
CustomAutowireConfigure:自定义作用于的配置器。
示例Spring使用属性占位符配置器:
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigure">
<property name="locations">
<list>
<value>dbconn.properties</value>
<value>.......</value>
</list>
</property>
</bean>
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${jdbc.driverClass}"/>
<property name="jdbcUrl" value="${jdbc.url}"/>
<property name="user" value="${jdbc.name}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
jdbc.properties:
jdbc.driverClass=com.mysql.jdbc.driver
jdbc.url=jdbc:mysql://localhost:3306/javaee
jdbc.name=root
jabc.password=1111
Spring的重写占位符配置器配置如下:
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigure">
<property name="locations">
<list>
<value>dbconn.properties</value>
<value>.......</value>
</list>
</property>
</bean>
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"/>
jdbc.properties:
dataSource.driverClass=com.mysql.jdbc.driver
dataSource.url=jdbc:mysql://localhost:3306/javaee
dataSource.name=root
dataSource.password=1111
重写占位符配置器属性文件里属性的格式必须是:beanName.property=value
相关文章推荐
- 一个jar包里的网站
- 一个jar包里的网站之文件上传
- 一个jar包里的网站之返回对媒体类型
- Spring中属性注入详解
- struts2 spring整合fieldError问题
- spring的jdbctemplate的crud的基类dao
- 读取spring配置文件的方法(spring读取资源文件)
- java实现简单美女拼图游戏
- java基本教程之线程休眠 java多线程教程
- JSP开发中在spring mvc项目中实现登录账号单浏览器登录
- 基于Spring框架的Shiro配置方法
- Spring MVC中上传文件实例
- 实例讲解Java的Spring框架中的AOP实现
- 解析Java中如何获取Spring中配置的bean
- Spring的注解配置与XML配置之间的比较
- java Spring整合Freemarker的详细步骤
- Java 二维码,QR码,J4L-QRCode 的资料整理
- java当中的定时器的4种使用方式
- java中 spring 定时任务 实现代码
- spring mvc实现登录账号单浏览器登录