Java注解之@PostConstruct
Java注解之@PostConstruct
- Java注解之@PostConstruct
- 概述
- 工作原理
- 执行顺序
- 注意事项
- 用法示例
Java注解之@PostConstruct
概述
@PostConstruct注解是Java自带的用于标记一个方法,使其在对象依赖注入完成之后、正式使用之前被自动调用。它常用于执行初始化逻辑,例如配置资源、预加载数据或验证依赖项。
工作原理
在 Spring 或其他依赖注入框架中,Bean 在实例化之后、依赖注入完成之前,Spring 会查找并自动调用该方法。
执行顺序
在spring框架中,类初始化生命周期的默认执行顺序为:
Constructor --> @Autowired --> @PostConstruct
如果想在生成对象时候完成某些初始化操作,而偏偏这些初始化操作又依赖于依赖注入,那么就无法在构造函数中实现。此时就要用到@PostConstruct
常见使用场景如:
- 数据库资源池初始化
- 配置文件的加载:在启动时读取配置文件内容,对其进行校验
- 缓存载入:从数据库等途径加载数据并缓存
注意事项
1、只有一个非静态方法能使用此注解
2、被注解的方法不得有任何参数
3、被注解的方法返回值必须为void
4、被注解方法不得抛出已检查异常
5、此方法只会被执行一次
用法示例
import javax.annotation.PostConstruct;
import org.springframework.stereotype.Component;@Component
public class DatabaseInitializer {private final DataSource dataSource;public DatabaseInitializer(DataSource dataSource) {this.dataSource = dataSource;// 此时 dataSource 可能尚未注入,不能在此操作依赖项}@PostConstructpublic void init() {// 依赖注入已完成,可安全使用 dataSourceinitializeDatabaseSchema(dataSource);}private void initializeDatabaseSchema(DataSource dataSource) {// 初始化数据库表结构等操作}
}