Springboot如何读取自定义pro文件注入static静态变量
Springboot 读取pro文件注入static静态变量
mailConfig.properties
#服务器 mail.host=smtp.qq.com #端口号 mail.port=587 #邮箱账号 mail.userName=hzy_daybreak_lc@foxmail.com #邮箱授权码 mail.passWord=vxbkycyjkceocbdc #时间延迟 mail.timeout=25000 #发送人 mail.emailForm=hzy_daybreak_lc@foxmail.com #发件人 mail.personal=华夏衣裳 #主题 mail.subject=同袍用户激活 #内容模板 mail.html=您的邮箱验证码为:
MailConfig.java
/* * @(#)MailConfig.java Created on 2019年9月11日 * Copyright (c) 2019 ZDSoft Networks, Inc. All rights reserved. * $Id$ */ package com.hxyc.config.properties; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.PropertySource; import org.springframework.stereotype.Component; /** * @author huangzy * @version $Revision: 1.0 $, $Date: 2019年9月11日 上午10:29:35 $ */ @Configuration @PropertySource(value = "classpath:config/mailConfig.properties", encoding = "UTF-8") @Component public class MailConfig { public static String host; public static Integer port; public static String userName; public static String passWord; public static String emailForm; public static String timeout; public static String personal; public static String html; public static String subject; /** * @return Returns the host. */ public static String getHost() { return host; } /** * @param host * The host to set. */ @Value("${mail.host}") public void setHost(String host) { MailConfig.host = host; } /** * @return Returns the port. */ public static Integer getPort() { return port; } /** * @param port * The port to set. */ @Value("${mail.port}") public void setPort(Integer port) { MailConfig.port = port; } /** * @return Returns the userName. */ public static String getUserName() { return userName; } /** * @param userName * The userName to set. */ @Value("${mail.userName}") public void setUserName(String userName) { MailConfig.userName = userName; } /** * @return Returns the passWord. */ public static String getPassWord() { return passWord; } /** * @param passWord * The passWord to set. */ @Value("${mail.passWord}") public void setPassWord(String passWord) { MailConfig.passWord = passWord; } /** * @return Returns the emailForm. */ public static String getEmailForm() { return emailForm; } /** * @param emailForm * The emailForm to set. */ @Value("${mail.emailForm}") public void setEmailForm(String emailForm) { MailConfig.emailForm = emailForm; } /** * @return Returns the timeout. */ public static String getTimeout() { return timeout; } /** * @param timeout * The timeout to set. */ @Value("${mail.timeout}") public void setTimeout(String timeout) { MailConfig.timeout = timeout; } /** * @return Returns the personal. */ public static String getPersonal() { return personal; } /** * @param personal * The personal to set. */ @Value("${mail.personal}") public void setPersonal(String personal) { MailConfig.personal = personal; } /** * @return Returns the html. */ public static String getHtml() { return html; } /** * @param html * The html to set. */ @Value("${mail.html}") public void setHtml(String html) { MailConfig.html = html; } /** * @return Returns the subject. */ public static String getSubject() { return subject; } /** * @param subject * The subject to set. */ @Value("${mail.subject}") public void setSubject(String subject) { MailConfig.subject = subject; } }
springboot静态属性注入的解决
第一种方式
通过springboot组件初始化生命周期进行属性(对象)赋值
@Component public class DSHWechatApiUtil extends DSHBaseController { @Autowired private IThirdPartyAuthDao thirdPartyAuthDao; private static IThirdPartyAuthDao staticThirdPartyAuthDao; @PostConstruct public void init() { staticThirdPartyAuthDao = thirdPartyAuthDao; } public static JSONObject getAuthorizerToken(String componentAccessToken, String authorizerAppid, String authorizerRefreshToken) { JSONObject returnObject = new JSONObject(); try { if (DSHUtils.isEmpty(componentAccessToken)) { componentAccessToken = staticThirdPartyAuthDao.selectWechatValue(DSHConstants.WECHAT_PARAMS.COMPONENT_ACCESS_TOKEN); } } catch (Exception e) { e.printStackTrace(); } return returnObject; } }
可以看到,当DSHWechatApiUtil工具类组件进行初始化时,调用@PostConstruct注解标注的方法,对静态变量进行了赋值。
第二种方式
通过@Value()注解
@Value()注解不会对静态变量进行属性注入,通过第一种方式的思维,那么我们肯定得想个办法,在这个组件初始化时也来赋值。
第一种方式肯定也是可以的,先写一个属性,然后通过@Value()注解对这个属性进行赋值,最后通过@PostConstruct注解方式赋值给静态属性。
这里我们要采用另一个方式,这里的方式是通过set方法来赋值。属性是static修饰的,get方法也是static修饰的,但是set方法不能是static修饰,使用@Value()注解来修饰set方法。
这样就能成功注入。
第三种方式
第三种方式和第二种差不多,
@ConfigurationProperties(prefix = ProjectConfig.PROJECT_PREFIX) public class ProjectConfig { public static final String PROJECT_PREFIX = "project"; /** * 系统版本号 */ private String version; /** * 项目名称 */ private String name; /** * 版权年份 */ private String copyrightYear; /** * 实例演示开关 */ private static boolean demoEnabled; /** * 获取地址ip开关 */ private static boolean addressEnabled; public String getVersion() { return version; } public void setVersion(String version) { this.version = version; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getCopyrightYear() { return copyrightYear; } public void setCopyrightYear(String copyrightYear) { this.copyrightYear = copyrightYear; } public boolean isDemoEnabled() { return demoEnabled; } public void setDemoEnabled(boolean demoEnabled) { ProjectConfig.demoEnabled = demoEnabled; } public static boolean isAddressEnabled() { return addressEnabled; } public void setAddressEnabled(boolean addressEnabled) { ProjectConfig.addressEnabled = addressEnabled; } }
如上述代码,只要把set方法设置为非静态,那么这个配置类的静态属性就能成功注入了。
以上是Springboot如何读取自定义pro文件注入static静态变量的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

许多用户都不太清楚小米平板6和pro哪个值得入手,从配置来看,肯定是Pro的更高配置是推荐的,但也要综合价格和自己的预算来看,不同的产品定位的人群也是不同的。小米平板6和pro哪个值得入手答:小米平板6Pro会更好,不管是性能还是拍照续航都会更好。1、处理器小米平板6:骁龙870小米平板6Pro:性能更强大的骁龙第一代骁龙8+处理器2、电池大小小米平板6:8840mAh,67W秒充小米平板6Pro:8600mAh,33W快充小米平板6的续航上表现会更加的优秀,但是充电会比较慢。3、拍照小米平板6

iPhone15Pro与iPhone14Pro:规格比较以下是iPhone15ProMax和iPhone14ProMax的规格比较:iPhone15ProMaxiPhone14ProMax显示尺寸6.7英寸6.7英寸显示技术超级视网膜XDROLED超级视网膜XDROLED分辨率2796x1290像素,460ppi2796x1290像素,460ppi刷新率120赫兹120赫兹峰值亮度2,000尼特2,000尼特尺寸6.29x3.02x0.32英寸6.33x3.06x0.31英寸重量221克240克

不少用户在第一次接触使用小米手环8的时候不知道该怎么操作使用开机,其实方法也很简单,我们只需要找到USB数据线然后把手表和电源连接起来,然后冲一段时间电以后就可以按键开机了。小米手环8pro怎么开机1、首先把手表安装好,就是把主题和表带两边对接连上。2、然后我们第一次开机是需要连接充电线的,连接方法就在手表底部。3、等待手表震动一下就可以进行开机了,随后就可以和你的手机进行连接了。>>>

SpringBoot和SpringMVC都是Java开发中常用的框架,但它们之间有一些明显的差异。本文将探究这两个框架的特点和用途,并对它们的差异进行比较。首先,我们来了解一下SpringBoot。SpringBoot是由Pivotal团队开发的,它旨在简化基于Spring框架的应用程序的创建和部署。它提供了一种快速、轻量级的方式来构建独立的、可执行

macbookair是苹果的一款笔记本电脑,很多用户好奇macbookair和pro之间,有哪些区别,这两个笔记本在处理器核心,主频以及显卡类型上都有一些区别。macbookair和pro的区别:1、处理器核心,线程不同:macbookair的处理器拥有双核心,四线程。而Pro比macbookair更强大,拥有四核心,八线程。2、处理器主频不同:macbookair的处理器是1.6GHz的主频。pro的处理器主频是1.4GHz,比macbookair低了一些。3、显卡不同:macbookair采

小米pro14已经上市,而且它的配置作为商务办公本来说也是非常不错的了,而且还有三种处理器配置可以选择,价格也不是特别高。很多小伙伴不知道小米Pro14的具体上市时间。小米pro14上市时间答:2021年11月10日小米Pro14锐龙版开启预约,首发价5299元起。2022年7月4日,小米笔记本Pro14发布,7月8日零点正式开售。小米pro14介绍1、屏幕配备14英寸2.5K超视网膜屏,分辨率为2560x1600,屏占比高达88%,拥有100%sRGB色域,刷新率为120Hz。2、外观采用6系

在项目中,很多时候需要用到一些配置信息,这些信息在测试环境和生产环境下可能会有不同的配置,后面根据实际业务情况有可能还需要再做修改。我们不能将这些配置在代码中写死,最好是写到配置文件中,比如可以把这些信息写到application.yml文件中。那么,怎么在代码里获取或者使用这个地址呢?有2个方法。方法一:我们可以通过@Value注解的${key}即可获取配置文件(application.yml)中和key对应的value值,这个方法适用于微服务比较少的情形方法二:在实际项目中,遇到业务繁琐,逻

您家里装摄像头了吗?近些年,家用摄像头产品一下就成了爆款。我问了身边的小伙伴们,好家伙~居然每家都有,甚至有的还不止一台。但随着产品的普及,也随之带来了一些使用过程中的吐槽点。比如同一时间只能看到一个地方,再想看其他地方还得来回调整云台旋转摄像头,观看画面有一定的盲区和时间差;或者想仔细看看家中某个位置时,发现画面模糊根本看不清晰;等等......在体验上大打折扣。荣耀亲选与小湃科技共同推出荣耀亲选小湃智能摄像头Pro主打"三镜头双画面"。为行业及用户痛点提供了全新的解决思路
