zoukankan      html  css  js  c++  java
  • Spring的几种初始化和销毁方法

    一 指定初始化和销毁方法

    通过@Bean指定init-method和destroy-method;

    1 @Bean(initMethod="init",destroyMethod="detory")
    2     public Car car(){
    3         return new Car();
    4     }

    二 通过让Bean实现InitializingBean(定义初始化逻辑)

     1 @Component
     2 public class Cat implements InitializingBean,DisposableBean {
     3     
     4     public Cat(){
     5         System.out.println("cat constructor...");
     6     }
     7  8     @Override
     9     public void destroy() throws Exception {
    10         // TODO Auto-generated method stub
    11         System.out.println("cat...destroy...");
    12     }
    13 14     @Override
    15     public void afterPropertiesSet() throws Exception {
    16         // TODO Auto-generated method stub
    17         System.out.println("cat...afterPropertiesSet...");
    18     }
    19 20 }

    三 可以使用JSR250

     1 @PostConstruct:在bean创建完成并且属性赋值完成;来执行初始化方法
     2 
     3 @PreDestroy:在容器销毁bean之前通知我们进行清理工作
     4 
     5 @Component
     6 public class Dog implements ApplicationContextAware {
     7     
     8     //@Autowired
     9     private ApplicationContext applicationContext;
    10     
    11     public Dog(){
    12         System.out.println("dog constructor...");
    13     }
    14     
    15     //对象创建并赋值之后调用
    16     @PostConstruct
    17     public void init(){
    18         System.out.println("Dog....@PostConstruct...");
    19     }
    20     
    21     //容器移除对象之前
    22     @PreDestroy
    23     public void detory(){
    24         System.out.println("Dog....@PreDestroy...");
    25     }
    26 27     @Override
    28     public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
    29         // TODO Auto-generated method stub
    30         this.applicationContext = applicationContext;
    31     }
    32 33 }

    四 可以使用BeanPostProcessor

     1 /**
     2  * 后置处理器:初始化前后进行处理工作
     3  * 将后置处理器加入到容器中
     4  * 在bean初始化前后进行一些处理工作;
     5  * postProcessBeforeInitialization:在初始化之前工作
     6  * postProcessAfterInitialization:在初始化之后工作
     7  */
     8 @Component
     9 public class MyBeanPostProcessor implements BeanPostProcessor,Ordered {
    10 11     @Override
    12     public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
    13         // TODO Auto-generated method stub
    14         System.out.println("postProcessBeforeInitialization..."+beanName+"=>"+bean);
    15         return bean;
    16     }
    17 18     @Override
    19     public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
    20         // TODO Auto-generated method stub
    21         System.out.println("postProcessAfterInitialization..."+beanName+"=>"+bean);
    22         return bean;
    23     }
    24 25     @Override
    26     public int getOrder() {
    27         return 2;
    28     }
    29 30 }

     

  • 相关阅读:
    Fork/Join框架基本使用
    服务端高并发分布式架构演进之路
    Netty专题(一)-----计算机网络、TCP/ICP、linux网络I/O模型
    Nginx专题(四)-----https、nginx高可用
    Nginx专题(三)-----核心原理、跨域解决、防盗链、缓存以及压缩
    微信开放平台开发第三方授权登陆(四):微信小程序
    微信开放平台开发第三方授权登陆(三):微信公众号
    微信开放平台开发第三方授权登陆(二):PC网页端
    微信开放平台开发第三方授权登陆(一)-----开发前准备
    Mysql:如果数据存在则更新,不存在则插入
  • 原文地址:https://www.cnblogs.com/dalianpai/p/11722627.html
Copyright © 2011-2022 走看看