19.Spring后处理器

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值