@PostConstruct用法详解介绍 20251360编辑
Heaven helps those who help themselves
资深码农+深耕理财=财富自由
欢迎关注
资深码农+深耕理财=财富自由
欢迎关注

@PostConstruct用法详解介绍
Created by Marydon on 2024-01-26 16:13
1.@PostConstruct介绍
定义:在方法上加该注解会在项目启动的时候执行该方法,也可以理解为在spring容器初始化的时候执行该方法。
说明:被@PostConstruct修饰的方法会在服务器加载Servlet的时候运行,并且只会被服务器调用一次,类似于Serclet的inti()方法。
被@PostConstruct修饰的方法会在构造函数之后,init()方法之前运行。
作用:在依赖注入完成后执行初始化操作,例如对成员变量进行赋值、数据加载等操作。
注意:@PostConstruct注解只能被用于非静态方法上,并且只会被容器调用一次。
如果一个类中存在多个被@PostConstruct注解标记的方法,则它们的执行顺序并不确定,可以使用@Order注解指定执行顺序。
2.具体分析
在开发过程中,@PostConstruct注解通常会被用在java类当中。
加载顺序: Constructor(构造函数) >> @Autowired、@Resource、@Value >> @PostConstruct。
使用该注解,会在@Autowired对象注入之后,调用本方法(此时,被注入的对象就存在了。
被@PostConstruct注解的方法将会在依赖注入完成后被自动调用。
3.解决方案
用法1:为静态属性赋值。
第一步:从application.yml配置文件当中取值。
@Value("${sql.keywords}") String sqlKeywords;
说明:被@Value注解修饰的成员变量,也是可以被static修饰的。
@Value("${sql.keywords}") static String sqlKeywords;
注意:此处的@Value是org.springframework.beans.factory.annotation的注解,而不是lombok的注解。
第二步:设置静态属性,但不赋值。
private static List<String> keywordsArray;
第三步:通过注解@PostConstruct进行赋值。
/** * 将关键字转List */ @PostConstruct private void convertKeywords() { keywordsArray = List.of(sqlKeywords.split(",")); }
只有这样,才能顺利地将application.yml文件当中的值转成List,并且还是静态属性。
实现一次加载,永久使用的效果。
用法2和用法3见文末推荐。
写在最后
哪位大佬如若发现文章存在纰漏之处或需要补充更多内容,欢迎留言!!!
相关推荐:
与君共勉:最实用的自律是攒钱,最养眼的自律是健身,最健康的自律是早睡,最改变气质的自律是看书,最好的自律是经济独立 。
您的一个点赞,一句留言,一次打赏,就是博主创作的动力源泉!
↓↓↓↓↓↓写的不错,对你有帮助?赏博主一口饭吧↓↓↓↓↓↓
本文来自博客园,作者:Marydon,转载请注明原文链接:https://www.cnblogs.com/Marydon20170307/p/17989631
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
2022-01-26 springboot 获取本机IP、端口号、项目名