栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Spring中bean的执行初始化和销毁方法的4种方式详解

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring中bean的执行初始化和销毁方法的4种方式详解

一、引入

在java的实际开发过程中,我们可能需要在spring实例化一个bean的过程中,使用到初始化一个对象(bean)后立即初始化(加载)一些数据,或者在销毁一个对象之前进行执行一些事情等等。
因此Spring为我们提供了一系列的方式:

方式初始化 init销毁destroy
1@bean 注解,指定属性initMethod@bean 注解,指定属性destroyMethod
2xml形式,指定 init-methodxml形式,指定 destroy-method
3实现InitializingBean接口,重写afterPropertiesSet方法实现DisposableBean接口,重写destroy方法
4注解@PostConstruct注解@PreDestroy
二、方式详解
  1. @bean 注解
 @Bean(name="user",initMethod = "init",destroyMethod = "destroy")
 public User user(String name) {
     return new User(name);
 }
  1. xml形式

  1. 接口InitializingBean和DisposableBean
    实现InitializingBean接口,重写afterPropertiesSet()方法
public interface InitializingBean {

   
   void afterPropertiesSet() throws Exception;

}

实现DisposableBean方法,重写destroy方法

public interface DisposableBean {

	
	void destroy() throws Exception;

}
  1. @PostConstruct和@PreDestroy
//初始化后执行的方法,必须为voidlei'xing类型
 @PostConstruct
 public void init() {
 ***do someThing
 }

//bean销毁前执行的方法
@PreDestroy
public void init() {
***do someThing
}

从Java EE 5规范开始,Servlet中增加了两个影响Servlet生命周期的注解:@PostConstruct和@PreDestroy。
被@PostConstruct修饰的方法会在服务器加载Servlet的时候运行,并且只会被服务器调用一次,类似于Serclet的inti()方法。被@PostConstruct修饰的方法会在构造函数之后,init()方法之前运行。
被@PreDestroy修饰的方法会在服务器卸载Servlet的时候运行,并且只会被服务器调用一次,类似于Servlet的destroy()方法。被@PreDestroy修饰的方法会在destroy()方法之后运行,在Servlet被彻底卸载之前。

三、总结

一)对Spring版本的要求

  • xml和实现接口的方式是Spring最原始的方式,Spring任何版本均支持

  • @PostConstruct和@PreDestroy需要Spring2.5及以上版本

  • @bean :需要Spring 3.0以上版本支持

    二)执行顺序不一样
    其中
    此处引入Spring中bean生命周期的介绍

引自: 深究Spring中Bean的生命周期.

初始化之后执行顺序: @PostConstruct > InitializingBean > Beaninit-method(xml注解或者@Bean)

销毁之前执行顺序:@preDestroy > DisposableBean > destoryMethod(xml注解或者@Bean)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/315142.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号