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 }

     

  • 相关阅读:
    MySQL Explain详解
    sql查询:存在A表而不在B表中的数据
    mybatis处理集合、数组参数使用in查询
    mysql日期范围查找(两个日期之间的记录)
    MYSQL查询数据表中某个字段包含某个数值
    springboot+jpa分页(Pageable+Page)
    MySQL单表能存储多少条数据?
    nosql几种热门数据库的优缺点及应用场景
    MySQL百万级数据分页查询及优化
    Redis cluster群集操作
  • 原文地址:https://www.cnblogs.com/dalianpai/p/11722627.html
Copyright © 2011-2022 走看看