2020年11月20日 星期五

[SpringBoot 1.5] @ConfigurationProperties 與 @Value 使用介紹與主要差異

 前面一篇我們已經看過yaml與@ConfigurationProperties的合用

現在我們來看看@Value的使用

在appplication.properties為如下的情況

person.lastname=張三
person.age=18
person.birth=2017/12/15
person.boss=false
person.maps.k1=v1
person.maps.k2=14
person.lists=a,b,c
person.dog.name=dog
person.dog.age=15
我們只要在屬性上加上
@Value("${person.lastname}")
這樣就能夠取到值了
如下圖

但是要特別注意, 如果是複雜的類型封裝是不支持的
也就是下面的Map是無法用value注入
而另外一方面@ConfigurationProperties還有一個特殊功能-資料驗證
要做到這個要再加兩件事
1在類別上加上@Validated
2在屬性上加入要驗證的如@Email
另外阿~有可能@Email會報紅字
就需要在dependencies中加入
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
我加了之後再重新下載maven資源, 發現他還是報錯
後來我重開之後, 他pom檔案沒有紅字, 試一下就能用
@Component
@ConfigurationProperties(prefix = "person")
@Validated
public class Person {

//@Value("${person.lastname}")
@Email
private String lastname;
我們的lastname為我們的驗證項目
但是其中的字串為"張三", 並不是email格式
於是run之後就會有以下這一段







這樣就具有驗證效果了

下面我們示範在Controller中@Value的使用方式
我們先造一個HelloController
另一個私有的變數並冠以@Value

@RestController
public class HelloController {
@Value("${person.lastname}")
private String name;

@RequestMapping("/sayHello")
public String sayHello(){
return "Hello "+name;
}
}

然後我們開啟服務, 訪問一下,就能得到下圖
那@ConfigurationProperties 與 @Value 使用介紹與主要差異
為以下下圖


如果說, 我們只是在某個業務邏輯中需要獲取一下配置文件中的某項值, 使用@Value;
如果說, 我們專門編寫了一個javaBean來和配置文件進行映射, 我們就值接使用@ConfigurationProperties

以上內容請參考 尚硅谷IT培訓學校
https://www.youtube.com/watch?v=eyqiiWbBlMs&list=PLmOn9nNkQxJEFsK2HVO9-WA55Z7LZ2N0S&index=13




















沒有留言:

張貼留言

[leetcode] [KMP] KMP

ABCDABD... ABCDABF... 簡單的說, 傳統解兩字串匹配部分 可能會來個雙迴圈, 哀個比對, 當不匹配的時候, 會將下方列再後移1位 然後不匹配再後移 然而 如果像上放已經有4個屬於匹配的字串, 她就應該直接往後移四位來匹配, 而不是只移動1位 隱藏的思維是, 當...