SpringBoot通過@Value實現給靜態(tài)變量注入值詳解
一、簡介
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 注解。
當要給 靜態(tài)變量 注入值的時候,若是在靜態(tài)變量聲明之上直接添加@Value() 注解是無效的。
@Value("${mail.name:admin@163.com}")
private static String mailName;
@Value("${mail.pwd:admin123}")
private static String mailPwd;雖然在編譯和運行上沒有報錯,但是mailName、mailPwd的值都是NULL。
那么如何給靜態(tài)變量注入值呢?
二、@Value給靜態(tài)變量注入值
方案一
- 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;
@PostConstruct
public void init(){
mailName = preMailName;
mailPwd = preMailPwd;
}
}三、總結
- Spring不允許/不支持把值注入到
靜態(tài)變量中; - Spring的
@Value依賴注入是依賴set()方法; set()方法是普通的對象方法;static變量是類的屬性,static沒有 set() 方法;
到此這篇關于SpringBoot通過@Value實現給靜態(tài)變量注入值詳解的文章就介紹到這了,更多相關SpringBoot @Value內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Java中通過ZipOutputStream類如何將多個文件打成zip
ZipOutputStream?是Java中用于創(chuàng)建ZIP文件的類,它是?java.util.zip?包中的一部分,通過使用?ZipOutputStream?,可以將多個文件壓縮到一個ZIP文件中,這篇文章主要介紹了Java中(ZipOutputStream)如何將多個文件打成zip,需要的朋友可以參考下2023-09-09
spring boot實現上傳圖片并在頁面上顯示及遇到的問題小結
最近在使用spring boot搭建網站的過程之中遇到了有點小問題,最終解決方案是在main目錄下新建了一個webapp文件夾,并且對其路徑進行了配置,本文重點給大家介紹spring boot實現上傳圖片并在頁面上顯示功能,需要的朋友參考下吧2017-12-12

