Spring - @PostConstruct & @PreDestroy

简介: Spring - @PostConstruct & @PreDestroy

关于在 spring 容器初始化 bean 和销毁前所做的操作定义方式有三种

  1. 第一种:通过 @PostConstruct 和 @PreDestroy 方法,实现初始化后和销毁bean之前进行的操作
  2. 第二种:通过在xml中定义 init-method 和  destory-method 方法
  3. 第三种:通过bean实现 InitializingBean 和 DisposableBean 接口

此处介绍第一种方法:

从Java EE 5规范开始,Servlet中增加了两个影响Servlet生命周期的注解(Annotion);@PostConstruct和@PreDestroy。这两个注解被用来修饰一个非静态的void()方法 。写法有如下两种方式:


@PostConstruct
Public void someMethod() {}
或者
public @PostConstruct void someMethod(){}

被@PostConstruct修饰的方法会在服务器加载Servle的时候运行,并且只会被服务器执行一次。PostConstruct在构造函数之后执行,init()方法之前执行。PreDestro()方法在destroy()方法执行执行之后执行,如下:

被注解的Servlet生命周期:


image.png



需要注意的是,注解会多多少少地影响到服务器的启动速度。服务器在启动时候会遍历Web 应用的WEB-INF/classes下的所有class文件与WEB-INF/lib下的所有jar文件,以检查哪些类使用了注解。如果应用程序中没有 使用任何注解,可以在Web.xml中设置的metadata-complete属性为true.(支持@PostConstruct和 @PreDestroy的服务器需要支持Servlet2.5规范。Tomcat5.x仅支持Servlet2.4规范。)

我现在要说的是用实例说明它有什么作用。

比如说我有一种情况,在我的servlet初始化加载之前我想处理一些东西,像加载缓存等等。

怎么做。@PostConstruct就派上用场了。那为什么这玩意用的不多呢,这是因为如果初始化之前我们要加载或处理某些玩意完全可以在构造器初始化时就处理了,但这种方法需要自己重写构造器。

用法如下:


@Service("AjaxCacheableService")
public class AjaxCacheableService{
@Resource(name="cacheService")
protected CacheService cacheService;
protected int entityCacheMaxSize = 1000;
protected int entityCacheMaxLiveSeconds = 3600;
protected Cache entityCache;
/**
* 构造方法执行后,初始化
*/
@PostConstruct
public void init() {
    Assert.notNull(cacheService, "cacheService must be set!");
    getCache();
}
}
目录
相关文章
|
2月前
|
缓存 Java 数据库连接
Spring Boot奇迹时刻:@PostConstruct注解如何成为应用初始化的关键先生?
【8月更文挑战第29天】作为一名Java开发工程师,我一直对Spring Boot的便捷性和灵活性着迷。本文将深入探讨@PostConstruct注解在Spring Boot中的应用场景,展示其在资源加载、数据初始化及第三方库初始化等方面的作用。
73 0
|
2月前
|
Java Spring
Spring的Bean生命周期中@PostConstruct注解
【8月更文挑战第3天】在Spring框架中,`@PostConstruct`注解标示Bean初始化完成后立即执行的方法。它在依赖注入完成后调用,适用于资源加载、属性设置等初始化操作。若方法中抛出异常,可能影响Bean初始化。与之对应,`@PreDestroy`注解的方法则在Bean销毁前执行,用于资源释放。
109 0
|
4月前
|
Java Spring
在Spring Boot中,可以通过控制`@PostConstruct`注解方法的执行顺序来实现初始化时的顺序控制
在Spring Boot中,可以通过控制`@PostConstruct`注解方法的执行顺序来实现初始化时的顺序控制
348 1
|
4月前
|
缓存 Java 数据库连接
探究Spring Boot中@PostConstruct注解的使用场景
【6月更文挑战第2天】在Spring Boot开发过程中,了解和合理利用@PostConstruct注解是非常重要的。这个简单却强大的注解能够帮助开发者在依赖注入完成之后执行初始化逻辑,从而确保组件在使用前已经完全准备就绪。
100 4
|
缓存 Java Spring
Spring - @PostConstruct 源码解析
@PostConstruct 源码解析
285 1
Spring - @PostConstruct 源码解析
|
Java Spring 容器
深入理解Spring IOC之扩展篇(三)、InitializingBean、@PostConstruct、SmartInitializingSingleton
深入理解Spring IOC之扩展篇(三)、InitializingBean、@PostConstruct、SmartInitializingSingleton
254 0
|
XML Java 数据格式
Spring - Bean管理之配置(@PostConstruct、@PreDestroy、@Scope)
Spring - Bean管理之配置(@PostConstruct、@PreDestroy、@Scope)
142 0
Spring - Bean管理之配置(@PostConstruct、@PreDestroy、@Scope)
|
开发框架 Java API
@PostConstruct注解是Spring提供的?今天讲点不一样的
@PostConstruct注解是Spring提供的?今天讲点不一样的
291 1
@PostConstruct注解是Spring提供的?今天讲点不一样的
|
开发框架 Java API
@PostConstruct注解是Spring提供的?今天讲点不一样的
@PostConstruct注解是Spring提供的?今天讲点不一样的
415 0
@PostConstruct注解是Spring提供的?今天讲点不一样的
|
存储 Java API
Spring 框架中 @PostConstruct 注解详解
在Spring项目经常遇到@PostConstruct注解,首先介绍一下它的用途: 被注解的方法,在对象加载完依赖注入后执行。 此注解是在Java EE5规范中加入的,在Servlet生命周期中有一定作用,它通常都是一些初始化的操作,但初始化可能依赖于注入的其他组件,所以要等依赖全部加载完再执行。
562 0
Spring 框架中 @PostConstruct 注解详解