第13小节:
通过Bean实现InitializingBean接口(定义初始化逻辑)
DisposableBean接口(定义销毁)
编写一个类,首先上述两个接口
public class Cat implements InitializingBean, DisposableBean {
public Cat(){
System.out.println(“cat constructor…”);
}
public void destroy() throws Exception {
System.out.println(“cat destory…”);
}
public void afterPropertiesSet() throws Exception {
System.out.println(“cat afterPropertiesSet…”);
}
}
将Cat类加入到容器中:(通过扫描的方式)
在cat类上添加@Component注解,同时在配置类上使用@Import导入到容器中
@Component
public class Cat implements InitializingBean, DisposableBean {
…….
}
@ComponentScan(“com.atguigu.bean”)
@Configuration
public class MainConfigOfLifeCycle {
@Scope(“prototype”)
@Bean(initMethod = “init”,destroyMethod = “detory”)
public Car car(){
return new Car();
}
}
测试类:
@Test
public void test01(){
//创建ioc容器
AnnotationConfigApplicationContext applicationContext=new AnnotationConfigApplicationContext(MainConfigOfLifeCycle.class);
System.out.println(“容器创建完成。。。。。”);//当容器创建完成时,所有单实例的bean都会被创建出来
applicationContext.close();
}
测试结果:
cat constructor… ——调用构造创建实例
cat afterPropertiesSet… ——其他属性赋值完成后,调用初始化方法
容器创建完成。。。。。
六月 03, 2020 8:42:27 上午 org.springframework.context.annotation.AnnotationConfigApplicationContext doClose
信息: Closing org.springframework.context.annotation.AnnotationConfigApplicationContext@38cccef: startup date [Wed Jun 03 08:42:27 CST 2020]; root of context hierarchy
cat destory… —————容器关闭时进行销毁