目录
②方式二实现InitializingBean, DisposableBean设置初始化、销毁方法
③方式三使用@PostConstruct、@PreDestroy注解
对于普通的Java对象,当new的时候创建对象,当它没有任何引用的时候被垃圾回收机制回收。而由Spring IoC容器托管的对象,它们的生命周期完全由容器控制。Spring中每个Bean的生命周期如下
准备
创建Jack类
public class Jack {
public Jack(){
System.out.println("jack's constructor...");
}
}
创建配置类并注册Jack对象
@Configuration
public class JackConfig {
@Bean
public Jack getJack(){
return new Jack();
}
}
初始化以及销毁方法的创建
①方式一使用@Bean设置初始化以及销毁方法
在Jack中添加初始化、销毁方法,并在配置类中进行设置
编写测试方法
public class JackTest {
AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(JackConfig.class);
@Test
public void test1() {
Jack jack = ac.getBean(Jack.class);
System.out.println(jack);
ac.close();
}
}
②方式二实现InitializingBean, DisposableBean设置初始化、销毁方法
修改配置类中的对象获取
再次运行测试方法
③方式三使用@PostConstruct、@PreDestroy注解
再次运行测试方法
BeanPostProcessor Bean的后置处理器
bean的后置处理器是在初始化方法前后执行的,需要我们手动实现BeanPostProcessor并注册到容器中。
@Component
public class MyBeanProcessor implements BeanPostProcessor {
@Override
public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
System.out.println("初始化之前调用"+bean+"========>"+beanName);
return bean;
}
@Override
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
System.out.println("初始化之后调用"+bean+"========>"+beanName);
return bean;
}
}
修改配置类