一 指定初始化和销毁方法

通过@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;
}

}

最新文章

  1. 【干货分享】流程DEMO-费用报销
  2. Restful Api 最佳实践
  3. 加谁的QQ,并聊天‘
  4. 慕课网__CSS__vertical align
  5. C++与零值比较
  6. 函数调用导致堆栈不对称。原因可能是托管的 PInvoke 签名与非托管的目标签名不匹配。
  7. WebDriverExtensionsByC#
  8. STL vector使用方法介绍
  9. Android基础笔记(十)- 帧动画、补间动画具体解释、对话框
  10. 利刃 MVVMLight 8:DispatchHelper在多线程和调度中的使用
  11. eclipse导入maven时,html页面引入js的路径出现红色波浪线
  12. Linux c获取任意路径的硬盘使用情况
  13. Kali学习笔记10:端口扫描详解(下)
  14. python程序爬虫总是崩溃
  15. Oracle简单学习笔记
  16. python,类和对象(二),self 、__init__(self,param[,param...])、__private(私有变量)
  17. 二手回收能否翻过BAT这座大山?
  18. request:fail 小程序要求的 TLS 版本必须大于等于 1.2
  19. HIIT训练第一波,值得收藏的训练计划
  20. 字王·国标二级字库汉字GB内码un码三合一对照表2016版

热门文章

  1. CDH集群的时间同步--简要配置要求
  2. python-字符编码、字符串格式化、进制转化、数据类型、列表、元组、字典总结
  3. 【ASP.NET 基础】WCF入门教程一(什么是WCF)?
  4. vue使用readAsDataURL实现选择图片文件后预览
  5. 遇见Python
  6. 制作你的第一个dockerfile文件
  7. java基础之循环遍历List和Map
  8. 在 ASP.NET Core 项目中使用 AutoMapper 进行实体映射
  9. wordpress访问速度慢
  10. 移动端border-radius的几个BUG