SpringBoot的@Value注解如何設(shè)置默認(rèn)值
@Value注解設(shè)置默認(rèn)值
在Spring Boot中,如果使用@Value注解對(duì)屬性進(jìn)行賦值,但如果在配置文件或啟動(dòng)參數(shù)中未指定對(duì)應(yīng)的參數(shù)值,則會(huì)拋出異常。異常信息往往是對(duì)應(yīng)注入屬性的類(lèi)實(shí)例化失敗。
此時(shí),需要對(duì)@Value對(duì)應(yīng)的值進(jìn)行配置,或設(shè)置默認(rèn)值。
設(shè)置方法如下:
@RestController public class ConfigController { ?? ?// ①未指定默認(rèn)值 ?? ?@Value("${user.username}") ?? ?private String username; ?? ? ?? ?// ②指定默認(rèn)值為“unknown” ?? ?@Value("${projectName:unknown}") ?? ?private String projectName; }
針對(duì)以上兩個(gè)@Value的使用,如果username對(duì)應(yīng)的屬性值未在application.properties文件中配置或未在java -jar命令中傳遞參數(shù),那么啟動(dòng)時(shí)將拋出異常。
而針對(duì)第二種方式,通過(guò)“:”指定如果獲取不到該參數(shù)值時(shí)所使用的默認(rèn)值,則啟動(dòng)時(shí)不會(huì)出現(xiàn)異常信息。
@Value注解默認(rèn)值使用及效果測(cè)試
使用@Value注解的代碼
注意事項(xiàng):
(1)注解修飾的變量不能是final、static。
(2)使用@Component修飾所在類(lèi)交給spring管理。
(3)使用時(shí)要用@Autowried注入,不能new對(duì)象。
(4)${address-config:浙江省杭州市西湖區(qū)} address-config為配置文件屬性名,如果配置文件沒(méi)有配則使用默認(rèn)值,當(dāng)前默認(rèn)值為‘浙江省杭州市西湖區(qū)’。
注意使用的是${} 而不是 #{}
User.java
package com.oashiro.example.test; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; @Component public class User{ public String address; @Value("${address-config:浙江省杭州市西湖區(qū)}") public void steAddress(String address){ this.address=address; } public String getAddress(){ return this.address; } @Override public String toString() { return "User{" + "address='" + address + '\'' + '}'; } }
Junit測(cè)試
UserTest.java
package com.oashiro.example.test; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import static org.junit.jupiter.api.Assertions.*; @SpringBootTest class UserTest { @Autowired private User user; @BeforeEach public void setup(){ System.out.println("開(kāi)始測(cè)試1"); } @AfterEach public void teardown(){ System.out.println("測(cè)試結(jié)束1"); } @Test public void printUser(){ System.out.println(user); //預(yù)期結(jié)果(浙江省)與實(shí)際獲取的默認(rèn)結(jié)果(浙江省杭州市西湖區(qū))作對(duì)比 assertEquals("浙江省",user.getAddress()); } }
測(cè)試結(jié)果
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
解析springboot包裝controller返回值問(wèn)題
這篇文章主要介紹了springboot包裝controller返回值問(wèn)題,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-12-12Java輕松使用工具類(lèi)實(shí)現(xiàn)獲取MP3音頻時(shí)長(zhǎng)
在Java中,工具類(lèi)定義了一組公共方法,這篇文章將介紹Java中使用工具類(lèi)來(lái)獲取一個(gè)MP3音頻文件的時(shí)間長(zhǎng)度,感興趣的同學(xué)繼續(xù)往下閱讀吧2021-10-10Maven項(xiàng)目外部jar包導(dǎo)入的實(shí)現(xiàn)示例
在Maven項(xiàng)目里,我們經(jīng)常需要導(dǎo)入jar包依賴(lài),本文主要介紹了Maven項(xiàng)目外部jar包導(dǎo)入的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下2024-08-08RestTemplate發(fā)送請(qǐng)求時(shí)Cookie的影響及注意事項(xiàng)說(shuō)明
這篇文章主要介紹了RestTemplate發(fā)送請(qǐng)求時(shí)Cookie的影響及注意事項(xiàng)說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。2023-07-07idea全局設(shè)置Maven配置的實(shí)現(xiàn)步驟
本文主要介紹了idea全局設(shè)置Maven配置,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07SpringBoot redis分布式緩存實(shí)現(xiàn)過(guò)程解析
這篇文章主要介紹了SpringBoot redis分布式緩存實(shí)現(xiàn)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-10-10java的Jackson將json字符串轉(zhuǎn)換成泛型List
這篇文章主要介紹了java的Jackson將json字符串轉(zhuǎn)換成泛型List ,這里整理了詳細(xì)的代碼,有需要的小伙伴可以參考下。2017-02-02