這裏只作爲筆記,記錄自己對此註解實踐過的一些使用:
場景:
現實的開發過程中,經常會遇到一些配置信息,開發或測試是一套,到了客戶現場部署時,才能對一些內容進行確認修改,或者一些常量信息需要在不定週期內進行一些簡單的變更,可能只是變更一個日期,或者變更一些值,怎樣才能花費最小的代價去修改這些呢。
這裏利用了@ConfigurationProperties註解,初始化yaml文件中的屬性配置,即利用了yaml文件可以定義一個對象,然後將對象的值注入到配置類的特點進行處理。
使用步驟:
一、 在配置文件中定義需要定義的對象。如下:在application.yml中增加如下對象內容
#特點:可以注入到配置類中 給實體類賦值
user:
id: 11
name: 張三
age: 12
二、在後臺代碼中定義一個與配置文件中定義的對象的屬性相對應的實體類
package com.xian.plantform.base.web.dto;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Data
@Component
@ConfigurationProperties(prefix = "user")
public class UserDto {
private Integer id;
private String name;
private String password;
private String address;
private String email;
private Integer age;
private String phone;
private String remark;
private Integer sex;
@Override
public String toString() {
return "UserDto{" +
"id=" + id +
", name='" + name + '\'' +
", password='" + password + '\'' +
", address='" + address + '\'' +
", email='" + email + '\'' +
", age=" + age +
", phone='" + phone + '\'' +
", remark='" + remark + '\'' +
", sex=" + sex +
'}';
}
}
注意:
- @Data 是lombox的註解,直接省去了自己寫get set方法
- @Component 告訴springboot 當前這個類是作爲其組件
- @ConfigurationProperties(prefix = "user") 註解告訴spring 在初始化當前組件時,屬性與配置文件中的key值爲user的對象的屬性相對應,一一賦值
三、如何使用
@SpringBootTest
class PlantformApplicationTests {
@Autowired
private UserDto userDto;
@Test
void contextLoads() {
System.out.println(userDto);
}
}
如上,在使用類中(我這裏直接在測試類裏使用了)直接使用@Autowired註解進行告知,然後就可直接使用
附:
@ConfigurationProperties 的巧妙運用很多,在springboot的自動裝配中大量使用了此註解,瞭解過源碼的應該都知道。