当前位置 主页 > 网站技术 > 代码类 >

    Spring初始化和销毁的实现方法

    栏目:代码类 时间:2019-10-29 12:06

    这篇文章主要介绍了Spring初始化和销毁的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    一 指定初始化和销毁方法

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

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持IIS7站长之家。