首页 > 其他分享 >@PostConstruct用法详解介绍

@PostConstruct用法详解介绍

时间:2024-01-26 16:24:49浏览次数:28  
标签:List PostConstruct Value 用法 详解 注解 方法

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见文末推荐。

写在最后

  哪位大佬如若发现文章存在纰漏之处或需要补充更多内容,欢迎留言!!!

 相关推荐:

标签:List,PostConstruct,Value,用法,详解,注解,方法
From: https://www.cnblogs.com/Marydon20170307/p/17989631

相关文章

  • shell括号用法汇总
    总结:${}:作用是获取变量的结果,一般情况下,$var与${var}是没有区别的,但是用${}会比较精确的界定变量名称的边界范围。$[]:进行数学运算$():命令替换操作,同反应引号``,即命令的嵌套使用,将$()中包括的命令执行结果向外传递。举例:echotodayis$(date"+%Y-%m-%d")${}与$:$与${}都......
  • ARM指针寄存器——堆栈指针寄存器SP、程序计数器PC、连接寄存器LR详解
    堆栈的实现方法        在随机存储器区划出一块区域作为堆栈区,数据可以一个个顺序地存入(压入)到这个区域之中,这个过程称为‘压栈’(push)。通常用一个指针(堆栈指针SP—StackPointer)实现做一次调整,SP总指向最后一个压入堆栈的数据所在的数据单元(栈顶)。从堆......
  • STA(静态时序分析) 详解:如何计算最大时钟频率,以及判断电路是否出现时钟违例(timing viola
    1.什么是STA?     STA(静态时序分析)是时序验证的一种方法,用于计算和分析电路是否满足时序约束的要求。 2.为什么需要STA?    电路能否正常工作,其本质上是受最长逻辑通路(即关键路径)的限制,以及受芯片中存储器件的物理约束或工作环境的影响。    为了保......
  • 搜索推荐DeepFM算法详解:算法原理、代码实现、比赛实战
    搜索推荐DeepFM算法详解:算法原理、代码实现、比赛实战可以说,DeepFM是目前最受欢迎的CTR预估模型之一,不仅是在交流群中被大家提及最多的,同时也是在面试中最多被提及的:1、Deepfm的原理,DeepFM是一个模型还是代表了一类模型,DeepFM对FM做了什么样的改进,FM的公式如何化简并求......
  • 单点登录(SSO)实现详解!!!
    单点登录是什么?你是怎么理解的?单点登录是如何实现的普通登录提到单点登录,首先可以想到传统登录,通过登录页面根据用户名查询用户信息,判断密码是否正确,正确则将用户信息写到session,访问的时候通过从session中获取用户信息,判断是否已登录,登录则允许访问。普通登录的缺点由于sessi......
  • Activiti七大接口,28张表详解
    Activiti七大接口,28张表详解7大接口RepositoryService:提供管理流程部署和流程定义API。RuntimeService:提供运行时流程实例进行管理与控制API。TaskService:提供流程任务管理API。IdentityService:提供对流程用户数据进行管理的API,包括用户组、用户及用户–组关系。ManagementServ......
  • 如何获取微信的版本号详解【附完整源码】
    前两天群里有人问到这个问题,我想着在网上找个教程发给他,没想到这玩意还挺新鲜?网上基本上找不到实质性的回答...关于这个问题,其实挺简单的,微信的版本号其实就写在注册表中,读取它就完事了~打开注册列表找到【计算机\HKEY_CURRENT_USER\Software\Tencent\WeChat】,就看的到版本号......
  • Arch(Manjaro) Linux Pacman 命令详解
    参考Wiki:https://wiki.archlinuxcn.org/zh-hans/Pacmanyay命令参考:HerePacman是一个软件包管理器,作为ArchLinux发行版的一部分。简单来说,就是和apt-get之于Ubuntu一样,pacman就是Arch的apt-get。要想轻松玩转Arch,学会pacman是必需的。Pacman包管理器是ArchLinux的一大亮点。......
  • chatGPT原理详解
             自从chatGPT问世以来,它一路爆火,目前注册用户已达1亿。它的出圈让各大公司纷纷布局AIGC,有不少人预言,称ChatGPT带来的变革,将会颠覆谷歌的现有搜索产品和商业模式。就在发文前一个小时,谷歌宣布推出Bard对抗ChatGPT,打响保卫战,bard将在数周后面向大众使用。能引起......
  • 神经网络优化篇:详解超参数调试的实践:Pandas VS Caviar(Hyperparameters tuning in prac
    超参数调试的实践如今的深度学习已经应用到许多不同的领域,某个应用领域的超参数设定,有可能通用于另一领域,不同的应用领域出现相互交融。比如,曾经看到过计算机视觉领域中涌现的巧妙方法,比如说Confonets或ResNets。它还成功应用于语音识别,还看到过最初起源于语音识别的想法成功应......