说明:BeanPostProcessor接口:bean的后置处理器;在bean初始化前后进行一些处理工作;postProcessBeforeInitialization:在初始化之前工作;postProcessAfterInitialization:在初始化之后工作
源码接口:
package org.springframework.beans.factory.config;
import org.springframework.beans.BeansException;
/**
*/
public interface BeanPostProcessor {
/**
初始化方法init-method,afterPropertiesSet 等方法执行之前执行
*/
Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException;
/**
初始化方法init-method,afterPropertiesSet 等方法执行之后执行
*/
Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException;
}
实例:
@Component
public class MyBeanPostProcessor implements BeanPostProcessor {
public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
System.out.println("postProcessBeforeInitialization..."+ beanName+"=>"+bean);
return bean;
}
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
System.out.println("postProcessAfterInitialization..." + beanName + "=>" + bean );
return bean;
}
}
public class Car {
public Car(){
System.out.println("car constructor...");
}
public void init(){
System.out.println("car ... init...");
}
public void detory(){
System.out.println("car ... detory...");
}
}
@Configuration
@ComponentScan("top.daocaor.bean")
public class MainConfigOfLifeCycle {
@Bean(initMethod = "init",destroyMethod = "detory")
public Car car(){
return new Car();
}
}
public class IOCTest_LifeCycle {
@Test
public void test1(){
AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(MainConfigOfLifeCycle.class);
System.out.println("容器创建完成");
//applicationContext.getBean("car");
applicationContext.close();
}
}
结果

源码分析:
可以在这里打断点,查看调用栈





本文深入探讨了Spring框架中BeanPostProcessor接口的作用及其在bean初始化过程中的应用。通过具体实例,详细解释了postProcessBeforeInitialization和postProcessAfterInitialization方法如何在初始化前后执行,为读者提供了一个清晰的理解视角。
2884

被折叠的 条评论
为什么被折叠?



