項目下載地址:http://download.csdn.net/detail/aqsunkai/9805821 (一)yml配置文件: pom.xml加入依賴: 在application.yml文件中加上: 使用一個java類獲取yml文件的內容: 通過依賴註入就可以獲取該對象: 方法內獲取值: ( ...
項目下載地址:http://download.csdn.net/detail/aqsunkai/9805821
(一)yml配置文件:
pom.xml加入依賴:
<!-- 支持 @ConfigurationProperties 註解 --> <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-configuration-processor --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <version>${spring-boot.version}</version> </dependency>
在application.yml文件中加上:
#自定義的屬性和值
myYml:
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
使用一個java類獲取yml文件的內容:
package com.sun.configuration; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * 載入yaml配置文件的方法 * Created by sun on 2017-1-15. * spring-boot更新到1.5.2版本後locations屬性無法使用 * @PropertySource註解只可以載入proprties文件,無法載入yaml文件 * 故現在把數據放到application.yml文件中,spring-boot啟動時會載入 */ @Component //@ConfigurationProperties(locations = {"classpath:config/myProps.yml"},prefix = "myProps") @ConfigurationProperties(prefix = "myYml") public class YmlConfig { 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 String[] getArrayProps() { return arrayProps; } public void setArrayProps(String[] arrayProps) { this.arrayProps = arrayProps; } public List<Map<String, String>> getListProp1() { return listProp1; } public void setListProp1(List<Map<String, String>> listProp1) { this.listProp1 = listProp1; } public List<String> getListProp2() { return listProp2; } public void setListProp2(List<String> listProp2) { this.listProp2 = listProp2; } public Map<String, String> getMapProps() { return mapProps; } public void setMapProps(Map<String, String> mapProps) { this.mapProps = mapProps; } }
通過依賴註入就可以獲取該對象:
@Autowired private YmlConfig config;
方法內獲取值:
ObjectMapper objectMapper = new ObjectMapper(); //測試載入yml文件 System.out.println("simpleProp: " + config.getSimpleProp()); System.out.println("arrayProps: " + objectMapper.writeValueAsString(config.getArrayProps())); System.out.println("listProp1: " + objectMapper.writeValueAsString(config.getListProp1())); System.out.println("listProp2: " + objectMapper.writeValueAsString(config.getListProp2())); System.out.println("mapProps: " + objectMapper.writeValueAsString(config.getMapProps()));
(二)properties配置文件:
使用@PropertySource註解載入配置文件,該註解無法載入yml配置文件。使用@Value註解獲得文件中的參數值
package com.sun.configuration; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.PropertySource; import org.springframework.context.support.PropertySourcesPlaceholderConfigurer; /** * 載入properties配置文件,在方法中可以獲取 * abc.properties文件不存在,驗證ignoreResourceNotFound屬性 * 加上encoding = "utf-8"屬性防止中文亂碼,不能為大寫的"UTF-8" * Created by sun on 2017-3-30. */ @Configuration @PropertySource(value = {"classpath:/config/propConfigs.properties","classpath:/config/abc.properties"}, ignoreResourceNotFound = true,encoding = "utf-8") public class PropConfig { // PropertySourcesPlaceholderConfigurer這個bean, // 這個bean主要用於解決@value中使用的${…}占位符。 // 假如你不使用${…}占位符的話,可以不使用這個bean。 @Bean public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() { return new PropertySourcesPlaceholderConfigurer(); } } 獲取properties文件參數值有兩種方法,一種獲得Environment 的對象,第二種就是@Value註解 @Autowired private Environment env; @Value("${age}") String name; @RequestMapping("/") @ResponseBody String home(HttpServletRequest req) throws JsonProcessingException, UnsupportedEncodingException { logger.info("測試通過!!!"); ObjectMapper objectMapper = new ObjectMapper(); //測試載入yml文件 System.out.println("simpleProp: " + config.getSimpleProp()); System.out.println("arrayProps: " + objectMapper.writeValueAsString(config.getArrayProps())); System.out.println("listProp1: " + objectMapper.writeValueAsString(config.getListProp1())); System.out.println("listProp2: " + objectMapper.writeValueAsString(config.getListProp2())); System.out.println("mapProps: " + objectMapper.writeValueAsString(config.getMapProps())); //測試載入properties文件 System.out.println(env.getProperty("name"));//孫凱 System.out.println(env.getProperty("abc"));//null System.out.println(name);//26 return "Hello World!"; }