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

作者:彩虹过后的羽翼 时间:2022-12-02 18:26:08 

本文实例为大家分享了SpringBoot获取yml和properties配置文件的具体代码,供大家参考,具体内容如下

(一)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
0
投稿

猜你喜欢

  • SpringBoot如何实现word文档转pdf

    2023-04-19 09:33:55
  • ElasticSearch学习之ES Mapping实战示例

    2023-11-25 06:12:25
  • java实现死锁的示例代码

    2023-10-12 18:12:40
  • Caused by: java.lang.ClassNotFoundException: org.apache.commons.collections.Transformer异常

    2022-07-03 11:12:34
  • Android Dialog 设置字体大小的具体方法

    2023-09-12 12:46:49
  • C#几种截取字符串的方法小结

    2023-07-16 09:55:10
  • Android编程基于重力传感器实现横竖屏放向切换功能

    2022-11-30 00:38:54
  • 通过实例学习Either 树和模式匹配

    2023-05-21 02:02:41
  • unity实现贴图矩阵运算(旋转平移缩放)

    2022-07-27 13:53:41
  • Java 数据结构与算法系列精讲之排序算法

    2023-11-01 13:25:40
  • Java基于JDK 1.8的LinkedList源码详析

    2021-07-15 03:29:26
  • Java数组的基本学习教程

    2021-07-14 05:08:00
  • Spring MVC接口防数据篡改和重复提交

    2023-11-29 15:02:11
  • Android实现中国象棋游戏(局域网版)

    2023-11-22 16:07:07
  • C#获取进程或线程相关信息的方法

    2021-06-27 16:37:23
  • Java二维码登录流程实现代码(包含短地址生成,含部分代码)

    2021-10-23 02:06:26
  • Unity实现游戏存档框架

    2023-02-10 13:05:15
  • C#控制台输出进度和百分比的实例代码

    2021-10-01 23:49:43
  • JAVA实现心跳检测(长连接)

    2022-12-16 04:26:30
  • 创建Android守护进程实例(底层服务)

    2021-11-12 01:37:09
  • asp之家 软件编程 m.aspxhome.com