SpringBoot获取yml和properties配置文件的内容
(一)yml配置文件:
pom.xml加入依赖:
org.springframework.boot spring-boot-configuration-processor ${spring-boot.version}
在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文件的内容:
packagecom.sun.configuration;
importorg.springframework.boot.context.properties.ConfigurationProperties;
importorg.springframework.stereotype.Component;
importjava.util.ArrayList;
importjava.util.HashMap;
importjava.util.List;
importjava.util.Map;
/**
*加载yaml配置文件的方法
*Createdbysunon2017-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")
publicclassYmlConfig{
StringsimpleProp;
privateString[]arrayProps;
privateList
通过依赖注入就可以获取该对象:
@Autowired privateYmlConfigconfig;
方法内获取值:
ObjectMapperobjectMapper=newObjectMapper();
//测试加载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注解获得文件中的参数值
packagecom.sun.configuration;
importorg.springframework.context.annotation.Bean;
importorg.springframework.context.annotation.Configuration;
importorg.springframework.context.annotation.PropertySource;
importorg.springframework.context.support.PropertySourcesPlaceholderConfigurer;
/**
*加载properties配置文件,在方法中可以获取
*abc.properties文件不存在,验证ignoreResourceNotFound属性
*加上encoding="utf-8"属性防止中文乱码,不能为大写的"UTF-8"
*Createdbysunon2017-3-30.
*/
@Configuration
@PropertySource(value={"classpath:/config/propConfigs.properties","classpath:/config/abc.properties"},
ignoreResourceNotFound=true,encoding="utf-8")
publicclassPropConfig{
//PropertySourcesPlaceholderConfigurer这个bean,
//这个bean主要用于解决@value中使用的${…}占位符。
//假如你不使用${…}占位符的话,可以不使用这个bean。
@Bean
publicstaticPropertySourcesPlaceholderConfigurerpropertySourcesPlaceholderConfigurer(){
returnnewPropertySourcesPlaceholderConfigurer();
}
}
//获取properties文件参数值有两种方法,一种获得Environment的对象,第二种就是@Value注解
@Autowired
privateEnvironmentenv;
@Value("${age}")
Stringname;
@RequestMapping("/")
@ResponseBody
Stringhome(HttpServletRequestreq)throwsJsonProcessingException,UnsupportedEncodingException{
logger.info("测试通过!!!");
ObjectMapperobjectMapper=newObjectMapper();
//测试加载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"HelloWorld!";
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。