Bean的初始化和销毁
使用 @PostConstruct 注解, 标明初始化方法 —相当于 init-method 指定初始化方法
使用 @PreDestroy 注解, 标明销毁方法 ----相当于 destroy-method 指定对象销毁方法
示例:
@Component("IifeCycleBean" )
public class LifeCycleBean {
public LifeCycleBean(){
System. out . println("LifeCycleBean构造方法");
}
@PostConstruct
public void init(){
System. out . println("LifeCycleBean初始化");
}
@PreDestroy
public void teardown(){
System. out . print1n("LifeCycleBean销毁");
}
}
测试:
@Test
public vold test(){
ApplicationContext applicat ionContext = new ClassPathXmlAppl ication ontext(" applicat ionContext .xml");
LifecyleBean lifecyleBean = (LifecyleBean) applicat ionContext . getBean("lifecyleBean");
System.out. printin(lifecyleBean);
//没有销方法,也是由spring来管理的,
( (ClassPathXmlApplicationContext )applicat ionContext).close();
}
如果要执行对象的销毁方法
条件一: 单例Bean (在容器close时,单例Bean才会执行销毁方法 )
条件二: 必须调用容器 close 方法
Bean的作用域
通过@Scope注解指定Bean的作用域(默认是 singleton 单例)
示例:
@Component("lifecyleBean")
//默认情况下bean都是单例
@Scope(" prototype")//可以变成多例,但是不用调用销毁方法(没有销毁方法)
public class LifecyleBean {
}