spring boot 讀取配置檔案(application.yml)中的屬性值
阿新 • • 發佈:2019-01-09
在spring boot中,簡單幾步,讀取配置檔案(application.yml)中各種不同型別的屬性值:
1、引入依賴:
3、建立一個bean來接收配置資訊:
啟動後,這個bean裡面的屬性就會自動接收配置的值了。
1、引入依賴:
<!-- 支援 @ConfigurationProperties 註解 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
2、配置檔案(application.yml)中配置各個屬性的值:
myProps: #自定義的屬性和值
simpleProp: simplePropValue
arrayProps: 1,2,3,4,5
listProp1:
- name: abc
value: abcValue
- name: efg
value: efgValue
listProp2:
- config2Value1
- config2Vavlue2
mapProps:
key1: value1
key2: value2
3、建立一個bean來接收配置資訊:
@Component @ConfigurationProperties(prefix="myProps") //接收application.yml中的myProps下面的屬性 public class MyProps { private String simpleProp; private String[] arrayProps; private List<Map<String, String>> listProp1 = new ArrayList<>(); //接收prop1裡面的屬性值 private List<String> listProp2 = new ArrayList<>(); //接收prop2裡面的屬性值 private Map<String, String> mapProps = new HashMap<>(); //接收prop1裡面的屬性值 public String getSimpleProp() { return simpleProp; } //String型別的一定需要setter來接收屬性值;maps, collections, 和 arrays 不需要 public void setSimpleProp(String simpleProp) { this.simpleProp = simpleProp; } public List<Map<String, String>> getListProp1() { return listProp1; } public List<String> getListProp2() { return listProp2; } public String[] getArrayProps() { return arrayProps; } public void setArrayProps(String[] arrayProps) { this.arrayProps = arrayProps; } public Map<String, String> getMapProps() { return mapProps; } public void setMapProps(Map<String, String> mapProps) { this.mapProps = mapProps; } }
啟動後,這個bean裡面的屬性就會自動接收配置的值了。
4、單元測試用例:
@Autowired private MyProps myProps; @Test public void propsTest() throws JsonProcessingException { System.out.println("simpleProp: " + myProps.getSimpleProp()); System.out.println("arrayProps: " + objectMapper.writeValueAsString(myProps.getArrayProps())); System.out.println("listProp1: " + objectMapper.writeValueAsString(myProps.getListProp1())); System.out.println("listProp2: " + objectMapper.writeValueAsString(myProps.getListProp2())); System.out.println("mapProps: " + objectMapper.writeValueAsString(myProps.getMapProps())); }
測試結果:
simpleProp: simplePropValue
arrayProps: ["1","2","3","4","5"]
listProp1: [{"name":"abc","value":"abcValue"},{"name":"efg","value":"efgValue"}]
listProp2: ["config2Value1","config2Vavlue2"]
mapProps: {"key1":"value1","key2":"value2"}