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ì)第二種方式,通過“:”指定如果獲取不到該參數(shù)值時(shí)所使用的默認(rèn)值,則啟動(dòng)時(shí)不會(huì)出現(xiàn)異常信息。
@Value注解默認(rèn)值使用及效果測試
使用@Value注解的代碼
注意事項(xiàng):
(1)注解修飾的變量不能是final、static。
(2)使用@Component修飾所在類交給spring管理。
(3)使用時(shí)要用@Autowried注入,不能new對(duì)象。
(4)${address-config:浙江省杭州市西湖區(qū)} address-config為配置文件屬性名,如果配置文件沒有配則使用默認(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測試
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("開始測試1");
}
@AfterEach
public void teardown(){
System.out.println("測試結(jié)束1");
}
@Test
public void printUser(){
System.out.println(user);
//預(yù)期結(jié)果(浙江?。┡c實(shí)際獲取的默認(rèn)結(jié)果(浙江省杭州市西湖區(qū))作對(duì)比
assertEquals("浙江省",user.getAddress());
}
}
測試結(jié)果

總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot+VUE實(shí)現(xiàn)數(shù)據(jù)表格的實(shí)戰(zhàn)
本文將使用VUE+SpringBoot+MybatisPlus,以前后端分離的形式來實(shí)現(xiàn)數(shù)據(jù)表格在前端的渲染,具有一定的參考價(jià)值,感興趣的可以了解一下2021-08-08
java時(shí)間戳轉(zhuǎn)日期格式的實(shí)現(xiàn)代碼
本篇文章是對(duì)java時(shí)間戳轉(zhuǎn)日期格式的實(shí)現(xiàn)代碼進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06
Spring Cloud 的 Hystrix.功能及實(shí)踐詳解
這篇文章主要介紹了Spring Cloud 的 Hystrix.功能及實(shí)踐詳解,Hystrix 具備服務(wù)降級(jí)、服務(wù)熔斷、線程和信號(hào)隔離、請(qǐng)求緩存、請(qǐng)求合并以及服務(wù)監(jiān)控等強(qiáng)大功能,需要的朋友可以參考下2019-07-07
簡單談?wù)凧ava遍歷樹深度優(yōu)先和廣度優(yōu)先的操作方式
這篇文章主要介紹了簡單談?wù)凧ava遍歷樹深度優(yōu)先和廣度優(yōu)先的操作方式的相關(guān)資料,需要的朋友可以參考下2023-03-03
Java 實(shí)戰(zhàn)項(xiàng)目錘煉之在線美食網(wǎng)站系統(tǒng)的實(shí)現(xiàn)流程
讀萬卷書不如行萬里路,只學(xué)書上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實(shí)戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用java+SSM+jsp+mysql+maven實(shí)現(xiàn)一個(gè)在線美食網(wǎng)站系統(tǒng),大家可以在過程中查缺補(bǔ)漏,提升水平2021-11-11
java利用多線程和Socket實(shí)現(xiàn)猜拳游戲
這篇文章主要為大家詳細(xì)介紹了java利用多線程和Socket實(shí)現(xiàn)猜拳游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-08-08
如何通過eclipse web項(xiàng)目導(dǎo)入itellij idea并啟動(dòng)
這篇文章主要介紹了如何通過eclipse web項(xiàng)目導(dǎo)入itellij idea并啟動(dòng),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-12-12

