@PostConstruct 注解
不过,从 Java 9 开始,javax.annotation.PostConstruct 等注解被标记为过时(deprecated),并在后续的 Java 版本中可能会被移除。因此,如果你在使用 Java 9 或更高版本,并且你的项目不是 Java EE 项目,你可能需要考虑使用其他方式来代替 @PostConstruct 注解,比如直接在构造函数中执行初始化操作,或者使用 Spring 的@Bean 注解配合 initMethod 属性来指定初始化方法。
然而,在Spring框架中,@PostConstruct 注解仍然是被支持和推荐的。
一、什么是 @PostConstruct 注解
1、@PostConstruct
是 java 中用于 生命周期管理的注解,是 java 自己的 的注解,不是 spring 的。
2、当应用程序加载时,@PostConstruct
标注的方法会在 类实例化 并 完成依赖注入 后 自动调用。
3、作用:主要作用是执行一些 初始化逻辑,例如预加载资源、启动后台任务、校验依赖注入等。
4、执行时机:首先创建对象(实例化Bean),依赖注入完成(属性赋值),@PostConstruct
标记的方法被自动调用。
5、注意:
- 只能标记在 非静态的 void() 方法。
- 每个类中最多只能有一个
@PostConstruct
注解。 - 如果标注的方法抛出异常,容器会报告错误,可能终止应用程序的启动。
- 标记的方法只执行一次。
如果想在生成对象时完成某些初始化操作,而偏偏这些初始化操作又依赖于依赖注入,那么就无法在构造函数中实现。为此,可以使用 @PostConstruct
注解来完成。
二、使用案例
① 数据预热:使用 Redis 进行的数据预热,需要项目启动以后,触发第一次调用才能生成缓存,而利用 @PostConstruct
注解能让预热数据在 Bean 初始化阶段完成,比 Redis 更早。
public interface DataWarmingService {
String data();
}
======================================