SpringBoot @Value給靜態變量注入值

文章目錄

  • 一、簡介
  • 二、@Value給靜態變量注入值
    • 方案一:set()方法設置
    • 方案二:@PostConstruct注解修飾的方法中進行賦值
  • 三、總結

一、簡介

SpringBoot 中給普通變量注入值只需在變量上添加 @Value 注解即可。

application.properties 配置文件有如下配置:

mail.name=admin@163.com
main.pwd=admin123

給普通變量賦值時,直接在變量聲明之上添加 @Value() 注解即可。

@Value("${mail.name:admin@163.com}")
private String mailName;@Value("${mail.pwd:admin123}")
private String mailPwd;

注:需要在類上添加 @Component 注解。


當要給 靜態變量 注入值的時候,若是在靜態變量聲明之上直接添加@Value() 注解是無效的。

@Value("${mail.name:admin@163.com}")
private static String mailName;@Value("${mail.pwd:admin123}")
private static String mailPwd;

雖然在編譯和運行上沒有報錯,但是mailName、mailPwd的值都是NULL。


那么如何給靜態變量注入值呢?


二、@Value給靜態變量注入值

方案一:set()方法設置

@Component
public class MailInfo{public static String mailName;public static String mailPwd;@Value("${mail.name:admin@163.com}")public void setMailName(String name){mailName = name;}@Value("${mail.pwd:admin123}")public void setMailPwd(String pwd){mailPwd = pwd;}
}

注:需要在類上加入 @Component 注解,方法名 setMailName 和參數名 name 可以任意命名。


方案二:@PostConstruct注解修飾的方法中進行賦值

@Component
public class MailInfo{@Value("${mail.name:admin@163.com}")public String preMailName;@Value("${mail.pwd:admin123}")public String preMailPwd;public static String mailName;public static String mailPwd;@PostConstructpublic void init(){mailName = preMailName;mailPwd = preMailPwd;}
}

三、總結

  • Spring不允許/不支持把值注入到 靜態變量 中;

  • Spring的 @Value 依賴注入是依賴 set() 方法;

  • set() 方法是普通的對象方法;

  • static 變量是類的屬性,static沒有 set() 方法;

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/446659.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/446659.shtml
英文地址,請注明出處:http://en.pswp.cn/news/446659.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C++primer 第 4 章 表達式 4.1基礎 4 . 2 算術運算符 4 .3 邏輯和關系運算符 4 . 4 賦值運算符 4 .5 遞增和遞減運算符 4.6成員訪問運算符

表達式由一個或多個運算對象(operand)組成,對表達式求值將得到一個結果(result)字面值和變量是最簡單的表達式(expression),其結果就是字面值和變量的值。把一個運算符(operator)和一個或多個運算對象組合起來可以生成較復雜的表達式 4.1基礎 有幾個基礎概念對表達…

codeforces 266B-C語言解題報告

266B題目網址 題目解析 輸入n,t,排隊情況s,輸出第t次循環后,排隊情況 舉例: 輸入: 5 1 BGGBG 輸出: GBGGB 2.輸入的n代表排隊的人數,t代表整個循環t次之后再輸出結果 3.注意點: 使用while()大循環去控制t次的循環,使用for()內層循環去遍歷整個字符串 如果if(s[j]‘B’&…

Nginx Location配置詳解

目錄一、語法二、匹配順序三、root 與 alias 的區別四、server 和 location 中的 root一、語法 Location 是 Nginx 中一個非常核心的配置,關于Location,舉個簡單的配置例子: server {listen 80;server_name 10.0.7.115;location / {root /d…

英語口語-文章朗讀Week9 Wednesday

英語文章 Birds of the same species flock together, People tend to look for someone like themselves to be friends. But having the same interests is not the only standard when we are seeking friends. In most cases, especially for adults, people l…

C++primer 第 4 章 表達式 4.7條件運算符 4.8位運算符 4.9 sizeof運算符 4.10逗號運算符 4.11類型轉換 4 . 1 2 運算符優先級表

4.7條件運算符 條件運算符(?:)允許我們把簡單的if else邏輯嵌入到單個表達式當中,條件運算符按照如下形式使用:cond ? expr1 : expr2;其中cond是判斷條件的表達式,而expr1和expr2是兩個類型相同或可能轉換為某個公共類型的表達…

Git 之 git tag標簽使用

目錄一、簡介二、本地tag操作1、創建tag標簽(1)創建輕量標簽(2)創建附注標簽2、查看tag標簽(1)查看標簽列表(2)查看標簽提交信息(3)在提交歷史中查看標簽3、刪…

codeforces 110A-C語言解題報告

110A題目網址 題目解析 1.輸入一個數字,如果數字中包含的4,7的數量是4或7的倍數,則輸出YES,否則輸出NO 舉例: 輸入: 40047 輸出: NO 2.注意點: 1)由于數字很長,所以使用long long int類型,使用scanf("%lld",&n)接收輸入 2)整型轉字符串,使用sprintf(字符串,“…

C++primer 第 5 章語句 5.2語句作用域 5.3條件語句 5 . 4 迭代語句 5.5跳轉語句 5.6 try語句塊和異常處理

5 . 1 簡單語句 C語言中的大多數語句都以分號結束,一個表達式,比如ival 5 , 末尾加上分號就變成了表達式語句(expression statement)。表達式語句的作用是執行表達式并丟棄掉求值結果:ival 5; // 一條沒什么實際用處的表達式語…

英語口語-文章朗讀Week9Thursday

英語文章 Everyone has his or her own dreams. Some people wants to be millionaires so they can give many generous donations later; some people want to be scientists so they can bring many conveniences to the world; some people only want to be bus-drivers s…

操作系統 內存管理相關知識

cpu執行程序的基本過程 譯碼器 輸入為n管腳,輸出為2^n根管腳,編號為從0到2^(n-1),用少的輸入端控制更多的輸出端最常用的是三八譯碼器AD(Address bus)地址總線: 選中一行數據每一行 8bit 組成8吧B cpu輸入端32根線,輸出端就可以控…

2000年考研英語閱讀理解文章四

文章詳細解析網址 注意點 1.注意But,however等表示觀點看法轉折的詞語 2.全篇都在提及moral decline 道德下降,最后一段寫that may have more to do with life-style所以造成現象的原因應該是life-style.(主要) 前面都是在分析,最后一段點名原因 知識點 ----單詞 envy n/v…

Chrome瀏覽器必裝插件!尤其程序猿!

Chrome 瀏覽器有一個好處,就是插件極其豐富,只有你想不到的,沒有你找不到的,這恐怕是 Chrome 瀏覽器被眾多愛好者鐘愛的原因吧。 言歸正傳,今天來給大家推薦 10 款我自己珍藏的 Chrome 瀏覽器插件。 1、crxMouse Ch…

codeforces 160A-C語言解題報告

160A題目網址 題目解析 1.輸入硬幣的個數,分配硬幣,使拿最小的硬幣數比剩下的硬幣金額大 舉例: 輸入: 2 3 3 輸出 2 2.注意點: 1)接收整型數組時要使用&,因為只有字符數組是使用指針傳遞首地址的 scanf("%d",&a[i]); 2)使用冒泡排序,將數組從大到小排序…

英語口語-文章朗讀Week10 Monday

英語文章 Here are some valuable suggestions which may assist you in landing good job First, make your resume clear and associate it with the position you are applying for. Try to add details like your temporary jobs at college or your former jobs Second, …

論文遇到的格式問題和修正方式

word空格出現小圓點怎么辦論文參考文獻批量改為上角標,簡單好用!!!字數統計網站word封面下劃線怎么對齊(非常簡單徹底解決)

codeforces 41A-C語言解題報告

41A題目網址 題目解析 1.輸入一個字符串,如果第二行是倒序輸入這個字符串的,就輸出YES,否則輸出NO 舉例: 輸入: abb aba 輸出: NO 2.倒序輸出時,使用int jstrlen(t)-1;,因為strlen()是計算字符個數,而字符串是從0開始,最后一位是字符串長度減一 3.在接收第二個字符串輸入時…

Linux查看文件的首個字母 文件屬性字段

-rw-r–r– 1 root root 762 07-29 18:19 exit文件屬性字段總共有10個字母組成;第一個字符代表文件的類型。 文件屬性字段 字母“-”表示該文件是一個普通文件字母“d”表示該文件是一個目錄,字母”d”,是dirtectory(目錄)的縮寫&#xff1b…

英語口語-文章朗讀Week10 Wednesday

英語文章 Everyone needs sleep for survival, but how much? It is said that eight hours of sleep is fundamental to a healthy person. But today, many people are sacrificing their sleep time。 Modern people have so many alternatives: cell phones, PCs, TVs, g…

嵌入式Linux多任務編程 進程 管道 命名管道

進程 進程是一個可并發執行的具有獨立功能的程序關于某個數據集合的一次執行過程,也是操作系統執行資源分配和保護的基本單位。程序的一次執行就是一個進程一個程序可以派生多個進程多個不同程序運行的時候,也會有多個相對應的進程與其相互對應進程是動…