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脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

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

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

不少用戶在第一次接觸使用小米手環8的時候不知道該怎麼操作使用開機,其實方法也很簡單,我們只需要找到USB數據線然後把手錶和電源連接起來,然後衝一段時間電以後就可以按鍵開機了。小米手環8pro怎麼開機1、先把手錶安裝好,就是把主題和錶帶兩邊對接連上。 2、然後我們第一次開機是需要連接充電線的,連接方法就在手錶底部。 3.等待手錶震動一下就可以進行開機了,隨後就可以和你的手機進行連接了。 >>>

iPhone15Pro與iPhone14Pro:規格比較以下是iPhone15ProMax和iPhone14ProMax的規格比較:iPhone15ProMaxiPhone14ProMax顯示尺寸6.7吋6.7吋顯示技術超視網膜XDROLED超級視網膜XDROLED解析度2796x1290像素,460ppi2796x1290像素,赫2,000尼特尺寸6.29x3.02x0.32吋6.33x3.06x0.31吋重量221克240克

許多用戶都不太清楚小米平板6和pro哪個值得入手,從配置來看,肯定是Pro的更高配置是推薦的,但也要綜合價格和自己的預算來看,不同的產品定位的人群也是不同的。小米平板6和pro哪個值得入手答:小米平板6Pro會更好,不管是性能還是拍照續航都會更好。 1.處理器小米平板6:驍龍870小米平板6Pro:性能更強大的驍龍第一代驍龍8+處理器2、電池大小小米平板6:8840mAh,67W秒充小米平板6Pro:8600mAh,33W快充小米平板6的續航上表現會更加的優秀,但是充電會比較慢。 3.拍照小米平板6

SpringBoot和SpringMVC都是Java開發中常用的框架,但它們之間有一些明顯的差異。本文將探究這兩個框架的特點和用途,並對它們的差異進行比較。首先,我們來了解一下SpringBoot。 SpringBoot是由Pivotal團隊開發的,它旨在簡化基於Spring框架的應用程式的建立和部署。它提供了一種快速、輕量級的方式來建立獨立的、可執行

在專案中,很多時候需要用到一些配置信息,這些信息在測試環境和生產環境下可能會有不同的配置,後面根據實際業務情況有可能還需要再做修改。我們不能將這些設定在程式碼中寫死,最好是寫到設定檔中,例如可以把這些資訊寫到application.yml檔案中。那麼,怎麼在程式碼裡取得或使用這個位址呢?有2個方法。方法一:我們可以透過@Value註解的${key}即可取得設定檔(application.yml)中和key對應的value值,這個方法適用於微服務比較少的情形方法二:在實際專案中,遇到業務繁瑣,邏

您家裡裝攝影機了嗎?近些年,家用攝影機產品一下就成了爆款。我問了身邊的朋友們,好傢伙~居然每家都有,甚至有的還不只一台。但隨著產品的普及,也隨之帶來了一些使用過程中的吐槽點。例如同一時間只能看到一個地方,再想看其他地方還得來回調整雲台旋轉攝像頭,觀看畫面有一定的盲區和時間差;或者想仔細看看家中某個位置時,發現畫面模糊根本看不清晰;等等......在體驗上大打折扣。榮耀親選與小湃科技共同推出榮耀親選小湃智慧攝影機Pro主打"三鏡頭雙人畫面"。為業界及用戶痛點提供了全新的解決思路

小米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系

本文來寫個詳細的例子來說下dubbo+nacos+Spring Boot開發實戰。本文不會講述太多的理論的知識,會寫一個最簡單的例子來說明dubbo如何與nacos整合,快速建構開發環境。
