public class TestBean implements InitializingBean, DisposableBean { public TestBean() { System.out.println("1: constructor ----> 构造方法"); } @PostConstruct public void postConstruct() { System.out.println("3: @PostConstruct/postConstruct "); @PreDestroy public void PreDestroy() System.out.println("7: @PreDestroy/PreDestroy "); public void initMethod() { System.out.println("5: initMethod指定的initMethod方法"); public void destroyMethod() { System.out.println("9: destroyMethod指定的destroyMethod方法"); @Override public void destroy() throws Exception { System.out.println("8: DisposableBean/destroy"); public void afterPropertiesSet() throws Exception { System.out.println("4: InitializingBean/afterPropertiesSet......"); } public class TestBeanPostPorcesser implements BeanPostProcessor {
@Override
public Object postProcessBeforeInitialization(Object bean, String beanName)
throws BeansException {
if(beanName.equals("testBean")) {
System.out.println("2: BeanPostProcessor/postProcessBeforeInitialization: " + beanName);
}
return bean;
}
@Override
public Object postProcessAfterInitialization(Object bean, String beanName)
throws BeansException {
if(beanName.equals("testBean")) {
System.out.println("6: BeanPostProcessor/postProcessAfterInitialization: " + beanName);
}
return bean;
}
} @Configuration
public class TestConfig {
@Bean(initMethod = "initMethod",destroyMethod = "destroyMethod")
public TestBean testBean() {
return new TestBean();
}
@Bean
public TestBeanPostPorcesser testBeanPostPorcesser() {
return new TestBeanPostPorcesser();
}
} ******************************************************************** 1: constructor ----> 构造方法 2: BeanPostProcessor/postProcessBeforeInitialization: testBean 3: @PostConstruct/postConstruct 4: InitializingBean/afterPropertiesSet...... 5: initMethod指定的initMethod方法 6: BeanPostProcessor/postProcessAfterInitialization: testBean 2021-03-20 22:53:18.404 INFO 7492 --- [ main] o.s.s.concurrent.ThreadPoolTaskExecutor : Shutting down ExecutorService 7: @PreDestroy/PreDestroy 8: DisposableBean/destroy 9: destroyMethod指定的destroyMethod方法 Process finished with exit code 130 |