@PostConstruct注解的原理使用与注意事项
基本概念
@PostConstruct是java5的时候引入的注解,指的是在项目启动的时候执行这个方法,也可以理解为在spring容器启动的时候执行,可作为一些数据的常规化加载,比如数据字典之类的。
@PostConstruct被用来修饰一个非静态的void()方法。
@PostConstruct修饰的方法会在服务器加载Servlet的时候运行,并且只会被服务器执行一次。
执行时机
开始====>Web容器加载servlet====>Servlet构造函数====>PostConstruct注解方法====>Init()>Service()>destroy====>PreDestroy注解方法====>结束
注意
1、spring中Constructor、@Autowired、@PostConstruct的顺序
Constructor >> @Autowired >> @PostConstruct
2、只有一个方法可以使用此注解
3、被注解方法不得有任何参数
4、被注解方法返回值为void
5、被注解方法不得抛出已检查异常
6、被注解方法需是非静态方法
7、此方法只会被执行一次
应用场景
如果想在生成对象时候完成某些初始化操作,而偏偏这些初始化操作又依赖于依赖注入,那么就无法在构造函数中实现。为此,可以使用@PostConstruct注解一个方法来完成初始化,@PostConstruct注解的方法将会在依赖注入完成后被自动调用。
注意点
这个注解发生作用的时候是在项目初始化的时候进行的,而不是项目初始化完成之后,只能在这个部分进行一些配置(例如es的模板检查配置),缓存加载等操作,切忌进行耗时操作(业务操作)。