關于@Value取值為NULL的解決方案
@Value取值為NULL的問題
在spring mvc架構中,如果希望在程序中直接使用properties中定義的配置值,通常使用一下方式來獲?。?/p>
? ? @Value("${tag}")
? ? private String tagValue;但是取值時,有時這個tagvalue為NULL,可能原因有:
使用static或final修飾了tagValue,如下:
? ? private static String tagValue; ?//錯誤 ? ? private final String tagValue; ? ?//錯誤
類沒有加上@Component(或者@service等)
? ? @Component ? //遺漏
? ? class TestValue{
? ? ? ? ?@Value("${tag}")
? ? ? ? ?private String tagValue;
? ? }類被new新建了實例,而沒有使用@Autowired
? @Component ??
? ? class TestValue{
? ? ? ? ?@Value("${tag}")
? ? ? ? ?private String tagValue;
? ? }
? ? class Test{
? ? ? ? ...
? ? ? ? TestValue testValue = new TestValue()
? ? }這個testValue中肯定是取不到值的,必須使用@Autowired:
class Test{
? ? ? ? @AutoWired
? ? ? ? TestValue testValue
? ? }@Value取值為NULL原因分析
有兩種方式:
@Value(“${}”)用于獲取配置文件中的屬性值,通常用于獲取寫在application.properties中的內(nèi)容;@Value(“#{}”)其實是SpEL表達式的值,可以表示常量的值,或者獲取bean中的屬性
區(qū)別:
① ${ property : default_value }//property對應外部配置文件,default_value,就是前面的值為空時的默認值。② #{ obj.property? :default_value }//SpEL表達式,obj代表對象
一.@Value(“${}”)的使用
@Value("${inputDir}")
private String inputDir;但有時候@Value(“${}”)取值為NULL,可能是由下面幾個原因造成的:
1.類沒有交給spring管理,即沒有加上@Component等注解
@Service
public class TestValue{
@Value("${inputDir}")
private String inputDir;
……
}
2.使用 static或final修飾成員變量
@Value("${inputDir}")
private static String inputDir;//錯誤,不能使用@Value給static成員變量賦值
@Value("${inputDir}")
private final String inputDir;//錯誤,不能使用@Value給final成員變量賦值3.自己new了一個對象實例,而沒有使用@Autowired注解
class Test{
@AutoWired
TestValue testValue
//TestValue testValue = new TestValue()//錯誤,自己new的對象不能通過@Value注解獲取配置值。
}二.@Value{“#{}”}的使用
@RestController
@RequestMapping("/login")
@Component
public class LoginController {
@Value("#{1}")
private int number; //獲取數(shù)字 1
@Value("#{'Spring Expression Language'}") //獲取字符串常量
private String str;
@Value("#{dataSource.url}") //獲取bean的屬性,dataSource為spring管理的obj,不是配置文件中的配置項
private String jdbcUrl;
@Autowired
private DataSourceTransactionManager transactionManager;
@RequestMapping("login")
public String login(String name,String password) throws FileNotFoundException{
System.out.println(number);
System.out.println(str);
System.out.println(jdbcUrl);
return "login";
}
}運行結果

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
java如何從地址串中解析提取省市區(qū)(完美匹配中國所有地址)
這篇文章主要給大家介紹了關于java如何從地址串中解析提取省市區(qū)的相關資料,通過這個方法可以完美匹配中國所有地址,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下2022-07-07
Java Spring中Quartz調(diào)度器詳解及實例
這篇文章主要介紹了Java Spring中Quartz調(diào)度器詳解及實例的相關資料,需要的朋友可以參考下2017-02-02
Spring 源碼解析CommonAnnotationBeanPostProcessor
這篇文章主要為大家介紹了Spring 源碼解析CommonAnnotationBeanPostProcessor示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-10-10
Spring Boot Actuator監(jiān)控器配置及使用解析
這篇文章主要介紹了Spring Boot Actuator監(jiān)控器配置及使用解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-07-07

