三对方法的执行顺序是这样的
这是一对,记录下3
这是一对,记录下2
这是一对,记录下1
1、实现接口
2、自定义方法,然后用注解标识
3、configBean中@Bean相应的bean。然后@Bean注解的属性中 init-method和destroy-method属性
通过注解实现Bean的初始化和销毁
测试部分的代码
注意:需要使用AbstractApplicationContext类的上下文,才能实现主动close销毁。
代码总结
以注解的形式实现Bean的初始化及销毁(方法三)
使Bean继承InitializingBean 和 DisposableBean 接口。实现
public void destroy() throws Exception{ } public void afterPropertiseSet() throws Exception{ }
代码总结
以注解的形式实现Bean的初始化及销毁(方法二)
在方法的定义上加@PostConstruct 和 @PreDestroy
该方法可用@Component
代码总结
以注解的形式实现Bean的初始化及销毁(方法一)
注意:该方法由于@Component没有initMethod和destroyMethod属性,所以不支持用@Component注解,然后使用包扫描。
代码总结
xml形式实现Bean的初始化及销毁
xml VS annotation
注解形式方法二
xml VS annotation
注解形式之一
xml VS annotation
xml形式
xml VS annotation
xml和注解都支持的方式
若两处均对同一个bean做了装载,则两边对应的初始化方法和销毁方法,均会奏效
Bean初始化的各个注解
Bean初始化和销毁
1.实现2个接口InitializingfBean,DisposableBean
2.@PostConstruct,@PreDestroy也可
3.@Bean里面有2个属性,initMethod,destroyMethod设置一下/或者<bean>标签配置也可以
AbstractApplicationContext.close()关闭上下文,才会调用销毁
在注解方式中,有一个特殊的方式,是在初始化方法上添加@PostConstruct,在onDestroy方法上添加@PreDestroy注解
注解形式,是在@Bean中的两个属性,initMethod和destroyMethod来设置,和xml中bean中的init-method和destroy-method属性方法相同
xml中通过bean中的init-method和destroy-method属性来实现初始化和销毁控制
xml和注解都支持的方式,让javabean实现
通过注解实现Bean的初始化和销毁的逻辑处理(三种方式)
@PostConstruct:自定义初始化方法的标签。
@PreDestroy:自定销毁方法的标签。
方式一:Bean类实现InitializingBean、DisposableBean,并实现afterPropertiesSet()和destroy()。
代码:
@Component(value="bean2")
public class Bean2 implements InitializingBean,DisposableBean {
@Override
public void destroy() throws Exception {
System.out.println("Bean的销毁逻辑方法执行了");
}
@Override
public void afterPropertiesSet() throws Exception {
System.out.println("Bean的初始化逻辑方法执行了");
}
}
测试:
@Test
public void test(){
AbstractApplicationContext ac=new AnnotationConfigApplicationContext(Configuration2.class);
Bean2 bean=ac.getBean("bean2",Bean2.class);
System.out.println(bean);
ac.close();
}
结果:
Bean的初始化逻辑方法执行了
springinit_destory.Bean2@46a7cbfd
Bean的销毁逻辑方法执行了
方式二:不用实现接口,自定义方法,初始化方法添加@PostConstruct
销毁方法添加@PreDestroy。
@Component(value="bean2")
public class Bean2 {
@PostConstruct
public void onInit(){
System.out.println("Bean的初始化逻辑方法执行了");
}
@PreDestroy
public void destory(){
System.out.println("Bean的销毁逻辑方法执行了");
}
}
方式三:Bean的管理不通过@Component,而是通过@Bean,提供方法管理,Bean里提供的初始化和销毁方法不用添加注解,而是通过@Bean(initMethod=“初始化方法名”destroyMethod=“销毁方法名”)。
代码:
@Configuration
public class Configuration2 {
@Bean(initMethod="onInit",destroyMethod="destory",name="bean2")
public Bean2 bean(){
return new Bean2();
}
}
注解中很独特的初始化和销毁Bean的方式:
注解方式初始化和销毁Bean:
xml形式的初始化和销毁的方式:
xml和注解都支持的初始化和销毁方式:
注解形式的Bean初始化与销毁
xml形式的bean初始化与销毁
Bean的初始化和销毁——XML和注解都支持的方式