SpringBoot的@Value注解如何設置默認值
@Value注解設置默認值
在Spring Boot中,如果使用@Value注解對屬性進行賦值,但如果在配置文件或啟動參數(shù)中未指定對應的參數(shù)值,則會拋出異常。異常信息往往是對應注入屬性的類實例化失敗。
此時,需要對@Value對應的值進行配置,或設置默認值。
設置方法如下:
@RestController public class ConfigController { ?? ?// ①未指定默認值 ?? ?@Value("${user.username}") ?? ?private String username; ?? ? ?? ?// ②指定默認值為“unknown” ?? ?@Value("${projectName:unknown}") ?? ?private String projectName; }
針對以上兩個@Value的使用,如果username對應的屬性值未在application.properties文件中配置或未在java -jar命令中傳遞參數(shù),那么啟動時將拋出異常。
而針對第二種方式,通過“:”指定如果獲取不到該參數(shù)值時所使用的默認值,則啟動時不會出現(xiàn)異常信息。
@Value注解默認值使用及效果測試
使用@Value注解的代碼
注意事項:
(1)注解修飾的變量不能是final、static。
(2)使用@Component修飾所在類交給spring管理。
(3)使用時要用@Autowried注入,不能new對象。
(4)${address-config:浙江省杭州市西湖區(qū)} address-config為配置文件屬性名,如果配置文件沒有配則使用默認值,當前默認值為‘浙江省杭州市西湖區(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("測試結束1"); } @Test public void printUser(){ System.out.println(user); //預期結果(浙江?。┡c實際獲取的默認結果(浙江省杭州市西湖區(qū))作對比 assertEquals("浙江省",user.getAddress()); } }
測試結果
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
RestTemplate發(fā)送請求時Cookie的影響及注意事項說明
這篇文章主要介紹了RestTemplate發(fā)送請求時Cookie的影響及注意事項說明,具有很好的參考價值,希望對大家有所幫助。2023-07-07SpringBoot redis分布式緩存實現(xiàn)過程解析
這篇文章主要介紹了SpringBoot redis分布式緩存實現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2019-10-10