实现了接口 BeanPostProcessor 的类可以实现初始化bean前的方法和初始化bean后的方法。
对所有bean都有效。注意需要在相应的xml文件中配置。<bean class=""/> 引入即可。
附上实例源码:
applicationContext.xml
<bean id="car" class="com.wanhao.Car" init-method="init" destroy-method="destory">
<property name="name" value="Ford"/>
<property name="maxSpeed" value="#{T(java.lang.Math).PI *100 }"/>
<property name="place" value="CA"/>
<property name="price" value="101"/>
</bean>
<bean class="com.wanhao.MyBeanPost"/>
Car.java
package com.wanhao;
public class Car {
private String name;
private int maxSpeed;
private String place;
private double price;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Car [name=" + name + ", maxSpeed=" + maxSpeed + ", place=" + place
+ ", price=" + price + "]";
}
public Car() {
super();
System.out.println("CAR constructor runs....");
}
public int getMaxSpeed() {
return maxSpeed;
}
public Car(String name, int maxSpeed, String place) {
super();
this.name = name;
this.maxSpeed = maxSpeed;
this.place = place;
}
public void setMaxSpeed(int maxSpeed) {
this.maxSpeed = maxSpeed;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public String getPlace() {
return place;
}
public void setPlace(String place) {
this.place = place;
}
public void init()
{
System.out.println("car init...");
}
public void destory()
{
System.out.println("car destory...");
}
}
MyBeanPost.java
package com.wanhao;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;
public class MyBeanPost implements BeanPostProcessor {
@Override
public Object postProcessAfterInitialization(Object arg0, String arg1)
throws BeansException {
System.out.println("after init...");
return arg0;
}
@Override
public Object postProcessBeforeInitialization(Object arg0, String arg1)
throws BeansException {
System.out.println("before init...");
return arg0;
}
}