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

 更新时间:2019年10月29日 09:38:59   作者:天宇轩-王  
这篇文章主要介绍了Spring初始化和销毁的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

这篇文章主要介绍了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;
  }
}

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

相关文章

  • Java中finally关键字对返回值的影响详解

    Java中finally关键字对返回值的影响详解

    这篇文章主要介绍了Java中finally关键字对返回值的影响详解,执行完try catch里面内容准备return时,如果还有finally需要执行这是编译器会为我们增加一个全局变量去暂存return 的值,等到finally执行完成去return这个全局变量,需要的朋友可以参考下
    2024-01-01
  • java设计模式-代理模式(实例讲解)

    java设计模式-代理模式(实例讲解)

    下面小编就为大家带来一篇java设计模式-代理模式(实例讲解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • 原理分析Java Mybatis中的Mapper

    原理分析Java Mybatis中的Mapper

    这篇文章主要为大家介绍了Java Mybatis中的Mapper,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-01-01
  • Java中数组的一些常见操作和技巧分析

    Java中数组的一些常见操作和技巧分析

    这篇文章主要给大家介绍了关于Java中数组的一些常见操作和技巧分析的相关资料,数组(Array)是Java中的一种引用数据类型,是多个相同类型数据一定顺序排列的集合,并使用一个名字命名,并通过编号的方式对这些数据进行统一管理,需要的朋友可以参考下
    2023-08-08
  • JAVA调用JavaScript方法代码示例

    JAVA调用JavaScript方法代码示例

    之前在一次机缘巧合的情况下,需要时用JAVA执行js方法,查阅了一些文档,找到了相关解决方法,这里和大家分享一下,这篇文章主要给大家介绍了关于JAVA调用JavaScript方法的相关资料,需要的朋友可以参考下
    2023-09-09
  • JDK、J2EE、J2SE、J2ME四个易混淆概念区分

    JDK、J2EE、J2SE、J2ME四个易混淆概念区分

    这篇文章将向你详细介绍JDK、J2EE、J2SE、J2ME的概念以及他们的关系区别。
    2015-09-09
  • Spring security基于数据库中账户密码认证

    Spring security基于数据库中账户密码认证

    这篇文章主要介绍了Spring security基于数据库中账户密码认证,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • Java实现的权重算法(按权重展现广告)

    Java实现的权重算法(按权重展现广告)

    这篇文章主要介绍了Java实现的权重算法(按权重展现广告),本文讲解了算法实现原理和实现代码,需要的朋友可以参考下
    2015-04-04
  • Java基本知识点之变量和数据类型

    Java基本知识点之变量和数据类型

    这篇文章主要给大家介绍了关于Java基本知识点之变量和数据类型的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • JavaMail实现邮件发送的方法

    JavaMail实现邮件发送的方法

    这篇文章主要介绍了JavaMail实现邮件发送的方法,实例分析了java实现邮件发送的相关技巧,非常具有实用价值,需要的朋友可以参考下
    2015-04-04

最新评论