SpringBoot学习:获取yml和properties配置文件的内容
2018-02-26 17:45
981 查看
项目下载地址:http://download.csdn.net/detail/aqsunkai/9805821
(一)yml配置文件:pom.xml加入依赖:
在application.yml文件中加上:
使用一个java类获取yml文件的内容:
通过依赖注入就可以获取该对象:
(二)properties配置文件:使用@PropertySource注解加载配置文件,该注解无法加载yml配置文件。使用@Value注解获得文件中的参数值
(一)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!";
}
相关文章推荐
- SpringBoot学习:获取yml和properties配置文件的内容
- SpringBoot学习:获取yml和properties配置文件的内容(转)
- SpringBoot学习:获取yml和properties配置文件的内容(转)
- SpringBoot获取yml和properties配置文件的内容
- SpringBoot学习:获取yml和properties配置文件的内容(转载)
- SpringBoot内部配置:“application.properties配置”和”使用XML配置”,读取属性文件中的内容,日志配置,Profile配置(学习:SpringBoot实战)
- SpringBoot学习:获取yml和properties配置文件的内容
- spring boot中自定义properties文件并获取内容
- SpringBoot获取yml和properties配置文件的内容
- Spring-Boot (二) application.properties配置文件内容
- SpringBoot学习(三)从yml文件中获取数据和Thymeleaf 模板引擎
- SpringBoot学习之配置文件注入@ConfigurationProperties
- SpringBoot属性文件配置(application.properties/yml)
- Spring Boot 配置文件 yml与properties (二)
- spring boot学习2之properties配置文件读取
- Spring Boot 使用@ConfigurationProperties注解获取配置文件中的值
- Spring boot 学习笔记(1)——hello world创建,属性application.properties、 yml配置
- Java中如何获取spring中配置的properties属性文件内容
- 详解Spring Boot加载properties和yml配置文件
- SpringBoot配置文件application.yml (application.properties)