<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">spring
<bean id="car" class="comcycle.Car"
init-method="init"
destroy-method="destory"
>
<property name="bind" value="bind"></property>
</bean>
<!-- 配置bean 的後置處理器 -->
<bean id="myposter" class="com.main.myBeanPostProcessor"></bean>
</beans>
ide
package com.main;函數
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;post
import comcycle.Car;this
public class myBeanPostProcessor implements BeanPostProcessor {spa
@Override
public Object postProcessAfterInitialization(Object arg0, String arg1) throws BeansException {
System.out.println("postProcessAfterInitialization" + "------------>" + arg1);
// 初始化後改變bean的屬性值
Car car = new Car();
car.setBind("BMW");
return car;
}xml
@Override
public Object postProcessBeforeInitialization(Object arg0, String arg1) throws BeansException {
System.out.println("postProcessBeforeInitialization" + "------------>" + arg1);
return arg0;
}get
}
it
package comcycle;io
public class Car {
private String bind;
public Car() {
System.out.println("構造函數初始化");
}
public void setBind(String bind) {
this.bind = bind;
System.out.println("Bind 方法被調用");
}
public void init(){
System.out.println("init......");
}
public void destory() {
System.out.println("destory.....");
}
@Override
public String toString() {
return "Car [bind=" + bind + "]";
}
}
package com.main;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import comcycle.Car;
public class Cycle {
public static void main(String[] args) {
ApplicationContext ctx = new ClassPathXmlApplicationContext("cycle.xml");
Car car = (Car) ctx.getBean("car");
System.out.println(car);
((AbstractApplicationContext) ctx).close();
}
}
控制檯