Spring的几种初始化和销毁方法
2024-08-29 00:35:27
一 指定初始化和销毁方法
通过@Bean指定init-method和destroy-method;
@Bean(initMethod="init",destroyMethod="detory")
public Car car(){
return new Car();
}
二 通过让Bean实现InitializingBean(定义初始化逻辑)
@Component
public class Cat implements InitializingBean,DisposableBean { public Cat(){
System.out.println("cat constructor...");
}
@Override
public void destroy() throws Exception {
// TODO Auto-generated method stub
System.out.println("cat...destroy...");
}
@Override
public void afterPropertiesSet() throws Exception {
// TODO Auto-generated method stub
System.out.println("cat...afterPropertiesSet...");
}
}
三 可以使用JSR250
@PostConstruct:在bean创建完成并且属性赋值完成;来执行初始化方法 @PreDestroy:在容器销毁bean之前通知我们进行清理工作 @Component
public class Dog implements ApplicationContextAware { //@Autowired
private ApplicationContext applicationContext; public Dog(){
System.out.println("dog constructor...");
} //对象创建并赋值之后调用
@PostConstruct
public void init(){
System.out.println("Dog....@PostConstruct...");
} //容器移除对象之前
@PreDestroy
public void detory(){
System.out.println("Dog....@PreDestroy...");
}
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
// TODO Auto-generated method stub
this.applicationContext = applicationContext;
}
}
四 可以使用BeanPostProcessor
/**
* 后置处理器:初始化前后进行处理工作
* 将后置处理器加入到容器中
* 在bean初始化前后进行一些处理工作;
* postProcessBeforeInitialization:在初始化之前工作
* postProcessAfterInitialization:在初始化之后工作
*/
@Component
public class MyBeanPostProcessor implements BeanPostProcessor,Ordered {
@Override
public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
// TODO Auto-generated method stub
System.out.println("postProcessBeforeInitialization..."+beanName+"=>"+bean);
return bean;
}
@Override
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
// TODO Auto-generated method stub
System.out.println("postProcessAfterInitialization..."+beanName+"=>"+bean);
return bean;
}
@Override
public int getOrder() {
return 2;
}
}
最新文章
- 【干货分享】流程DEMO-费用报销
- Restful Api 最佳实践
- 加谁的QQ,并聊天‘
- 慕课网__CSS__vertical align
- C++与零值比较
- 函数调用导致堆栈不对称。原因可能是托管的 PInvoke 签名与非托管的目标签名不匹配。
- WebDriverExtensionsByC#
- STL vector使用方法介绍
- Android基础笔记(十)- 帧动画、补间动画具体解释、对话框
- 利刃 MVVMLight 8:DispatchHelper在多线程和调度中的使用
- eclipse导入maven时,html页面引入js的路径出现红色波浪线
- Linux c获取任意路径的硬盘使用情况
- Kali学习笔记10:端口扫描详解(下)
- python程序爬虫总是崩溃
- Oracle简单学习笔记
- python,类和对象(二),self 、__init__(self,param[,param...])、__private(私有变量)
- 二手回收能否翻过BAT这座大山?
- request:fail 小程序要求的 TLS 版本必须大于等于 1.2
- HIIT训练第一波,值得收藏的训练计划
- 字王·国标二级字库汉字GB内码un码三合一对照表2016版