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)注入屬性的類實(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修飾所在類交給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é)果(浙江?。┡c實(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-12
Java輕松使用工具類實(shí)現(xiàn)獲取MP3音頻時(shí)長(zhǎng)
在Java中,工具類定義了一組公共方法,這篇文章將介紹Java中使用工具類來(lái)獲取一個(gè)MP3音頻文件的時(shí)間長(zhǎng)度,感興趣的同學(xué)繼續(xù)往下閱讀吧2021-10-10
Maven項(xiàng)目外部jar包導(dǎo)入的實(shí)現(xiàn)示例
在Maven項(xiàng)目里,我們經(jīng)常需要導(dǎo)入jar包依賴,本文主要介紹了Maven項(xiàng)目外部jar包導(dǎo)入的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下2024-08-08
RestTemplate發(fā)送請(qǐng)求時(shí)Cookie的影響及注意事項(xiàng)說(shuō)明
這篇文章主要介紹了RestTemplate發(fā)送請(qǐng)求時(shí)Cookie的影響及注意事項(xiàng)說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。2023-07-07
idea全局設(shè)置Maven配置的實(shí)現(xiàn)步驟
本文主要介紹了idea全局設(shè)置Maven配置,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07
SpringBoot redis分布式緩存實(shí)現(xiàn)過(guò)程解析
這篇文章主要介紹了SpringBoot redis分布式緩存實(shí)現(xiàn)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-10-10
java的Jackson將json字符串轉(zhuǎn)換成泛型List
這篇文章主要介紹了java的Jackson將json字符串轉(zhuǎn)換成泛型List ,這里整理了詳細(xì)的代碼,有需要的小伙伴可以參考下。2017-02-02

