欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

關(guān)于@Value取值為NULL的解決方案

 更新時(shí)間:2022年07月08日 11:05:40   作者:zzmlake  
這篇文章主要介紹了關(guān)于@Value取值為NULL的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

@Value取值為NULL的問(wèn)題

在spring mvc架構(gòu)中,如果希望在程序中直接使用properties中定義的配置值,通常使用一下方式來(lái)獲?。?/p>

? ? @Value("${tag}")
? ? private String tagValue;

但是取值時(shí),有時(shí)這個(gè)tagvalue為NULL,可能原因有:

使用static或final修飾了tagValue,如下:

? ? private static String tagValue; ?//錯(cuò)誤
? ? private final String tagValue; ? ?//錯(cuò)誤

類沒(méi)有加上@Component(或者@service等)

? ? @Component ? //遺漏
? ? class TestValue{
? ? ? ? ?@Value("${tag}")
? ? ? ? ?private String tagValue;
? ? }

類被new新建了實(shí)例,而沒(méi)有使用@Autowired 

 ? @Component ??
? ? class TestValue{
? ? ? ? ?@Value("${tag}")
? ? ? ? ?private String tagValue;
? ? }
? ? class Test{
? ? ? ? ...
? ? ? ? TestValue testValue = new TestValue()
? ? }

這個(gè)testValue中肯定是取不到值的,必須使用@Autowired:

class Test{
? ? ? ? @AutoWired
? ? ? ? TestValue testValue
? ? }

@Value取值為NULL原因分析

有兩種方式:

  • @Value(“${}”)用于獲取配置文件中的屬性值,通常用于獲取寫(xiě)在application.properties中的內(nèi)容;
  • @Value(“#{}”) 其實(shí)是SpEL表達(dá)式的值,可以表示常量的值,或者獲取bean中的屬性

區(qū)別:

  • ① ${ property : default_value } //property對(duì)應(yīng)外部配置文件,default_value,就是前面的值為空時(shí)的默認(rèn)值。
  • ② #{ obj.property? :default_value } //SpEL表達(dá)式,obj代表對(duì)象

一.@Value(“${}”)的使用

 @Value("${inputDir}")
 private String inputDir;

但有時(shí)候@Value(“${}”)取值為NULL,可能是由下面幾個(gè)原因造成的: 

1.類沒(méi)有交給spring管理,即沒(méi)有加上@Component等注解

@Service
public class TestValue{
    @Value("${inputDir}")
    private String inputDir;
    ……
    }

2.使用 static或final修飾成員變量

@Value("${inputDir}")
private static String inputDir;//錯(cuò)誤,不能使用@Value給static成員變量賦值
@Value("${inputDir}")
private final String inputDir;//錯(cuò)誤,不能使用@Value給final成員變量賦值

3.自己new了一個(gè)對(duì)象實(shí)例,而沒(méi)有使用@Autowired注解

class Test{
    @AutoWired
    TestValue testValue
    //TestValue testValue = new TestValue()//錯(cuò)誤,自己new的對(duì)象不能通過(guò)@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,不是配置文件中的配置項(xiàng)
	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";
	}
}

運(yùn)行結(jié)果

在這里插入圖片描述

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • JAVA8如何妙用Optional解決NPE問(wèn)題詳解

    JAVA8如何妙用Optional解決NPE問(wèn)題詳解

    在Java中,null代表一個(gè)不存在的對(duì)象,如果對(duì)它進(jìn)行操作就會(huì)拋出java.lang.NullPointerException異常,下面這篇文章主要給大家介紹了關(guān)于JAVA8如何妙用Optional解決NPE問(wèn)題的相關(guān)資料,需要的朋友可以參考下
    2018-06-06
  • java多線程編程之慎重使用volatile關(guān)鍵字

    java多線程編程之慎重使用volatile關(guān)鍵字

    volatile關(guān)鍵字相信了解Java多線程的讀者都很清楚它的作用。volatile關(guān)鍵字用于聲明簡(jiǎn)單類型變量,下面看一下為什么要慎重使用volatile關(guān)鍵字
    2014-01-01
  • 利用Java計(jì)算某個(gè)日期是星期幾

    利用Java計(jì)算某個(gè)日期是星期幾

    不知道大家有沒(méi)有遇到過(guò)同樣的問(wèn)題,誰(shuí)誰(shuí)的生日又要到了,看看是星期幾?每年都要遇到好幾次,所以想索性利用Java寫(xiě)個(gè)小工具,一次查詢某具體日期在n年中分別是星期幾。這樣不就方便了嗎?本文里給出了詳細(xì)的示例代碼,感興趣的朋友們下面來(lái)一起看看吧。
    2016-10-10
  • Spring Boot 通過(guò)CORS實(shí)現(xiàn)跨域問(wèn)題

    Spring Boot 通過(guò)CORS實(shí)現(xiàn)跨域問(wèn)題

    這篇文章主要介紹了Spring Boot 通過(guò)CORS實(shí)現(xiàn)跨域,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-09-09
  • java常見(jiàn)事件響應(yīng)方法實(shí)例匯總

    java常見(jiàn)事件響應(yīng)方法實(shí)例匯總

    這篇文章主要介紹了java常見(jiàn)事件響應(yīng)方法,對(duì)于初學(xué)者有很好的參考借鑒價(jià)值,分享給大家,需要的朋友可以參考下
    2014-08-08
  • Springboot+AOP實(shí)現(xiàn)返回?cái)?shù)據(jù)提示語(yǔ)國(guó)際化的示例代碼

    Springboot+AOP實(shí)現(xiàn)返回?cái)?shù)據(jù)提示語(yǔ)國(guó)際化的示例代碼

    這篇文章主要介紹了Springboot+AOP實(shí)現(xiàn)返回?cái)?shù)據(jù)提示語(yǔ)國(guó)際化的示例代碼,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-07-07
  • SpringMVC的簡(jiǎn)單傳值(實(shí)現(xiàn)代碼)

    SpringMVC的簡(jiǎn)單傳值(實(shí)現(xiàn)代碼)

    下面小編就為大家?guī)?lái)一篇SpringMVC的簡(jiǎn)單傳值(實(shí)現(xiàn)代碼)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-05-05
  • java 繼承訪問(wèn)成員變量代碼實(shí)例

    java 繼承訪問(wèn)成員變量代碼實(shí)例

    這篇文章主要介紹了java 繼承訪問(wèn)成員變量代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10
  • Java基礎(chǔ)之Web服務(wù)器與Http詳解

    Java基礎(chǔ)之Web服務(wù)器與Http詳解

    無(wú)論你是前端開(kāi)發(fā)者還是后端開(kāi)發(fā)者,以及測(cè)試工程師,這篇文章的知識(shí)都是你需要弄懂的。讀完這一篇文章,將全面弄懂 HTTP 協(xié)議、TCP 協(xié)議,面試官再也難不倒你相關(guān)知識(shí)
    2021-09-09
  • idea切換git地址并刷新右下角git分支

    idea切換git地址并刷新右下角git分支

    這篇文章主要介紹了idea切換git地址并刷新右下角git分支,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07

最新評(píng)論