Spring容器初始化和销毁定义操作
第一种:通过@PostConstruct 和 @PreDestroy 方法 实现初始化和销毁bean之前进行的操作
/**
* 服务初始化
*/
@PostConstruct
public void init() {
this.register(); // 注册
this.leader(); // 选主
this.dictionary(); // 字典
}
@PreDestroy
public void destory() {
logger.info("Service Stopped");
}
第二种:通过 在xml中定义init-method 和 destory-method方法
applicationContext.xml配置文件:
<bean id="XXX" class="com.XXX" scope="singleton" init-method="init" destroy-method="cleanUp"></bean>
对应实体类需要对应有这2个方法
TIP:
AbstractApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
context.registerShutdownHook();
context.registerShutdownHook(); 是一个钩子方法,当jvm关闭退出的时候会调用这个钩子方法,
在设计模式之 模板模式中 通过在抽象类中定义这样的钩子方法由实现类进行实现,
这里的实现类是AbstractApplicationContext,这是spring 容器优雅关闭的方法
第三种: 通过bean实现InitializingBean和 DisposableBean接口
实体类实现接口
public class XXX implements InitializingBean,DisposableBean{
@Override
public void destroy() throws Exception {
// TODO Auto-generated method stub
System.out.println("我是销毁操作");
}
@Override
public void afterPropertiesSet() throws Exception {
// TODO Auto-generated method stub
System.out.println("我是初始化操作");
}
}
网友评论