您的当前位置:首页正文

SpringBoot获取yml和properties配置文件的内容

2022-05-06 来源:好走旅游网
SpringBoot获取yml和properties配置⽂件的内容

本⽂实例为⼤家分享了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⽂件的内容:

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\@ConfigurationProperties(prefix = \"myYml\")public class YmlConfig {

String simpleProp;

private String[] arrayProps;

private List> listProp1 = new ArrayList<>(); //接收prop1⾥⾯的属性值 private List listProp2 = new ArrayList<>(); //接收prop2⾥⾯的属性值

private Map 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> getListProp1() { return listProp1; }

public void setListProp1(List> listProp1) { this.listProp1 = listProp1; }

public List getListProp2() { return listProp2; }

public void setListProp2(List listProp2) { this.listProp2 = listProp2; }

public Map getMapProps() { return mapProps; }

public void setMapProps(Map 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\ 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!\"; }

以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。

因篇幅问题不能全部显示,请点此查看更多更全内容