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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章