添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
呐喊的乌冬面  ·  Configure ESLint to ...·  2 年前    · 
英俊的椰子  ·  SQL Server 2008 ...·  2 年前    · 
首页 > 软件编程 > java > SpringBoot解析Yaml配置文件

SpringBoot解析指定Yaml配置文件的实现过程

作者:叫我二蛋

这篇文章主要介绍了SpringBoot解析指定Yaml配置文件,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

下面还有投票,帮忙投个票👍

最近在看某个开源项目代码并准备参与其中,代码过了一遍后发现多个自定义的配置文件用来装载业务配置代替数据库查询,直接响应给前端,这里简单记录一下实现过程。

我们通常在SpringBoot项目中用配置文件属性时使用@ConfigurationProperties或@Value默认配置文件的属性值,也就是application.yml或者application.properties文件中的属性值。

但是不能全都往默认配置文件里堆的,本文利用@PropertySource和@ConfigurationProperties注解引用其它配置文件的属性值。

1、自定义配置文件

在resources下创建my.yaml文件,“-”用来表示数组类型, 一定要注意空格

contents: - id: 12121 name: nadasd - id: 3333 name: vfffff

2、配置对象类

创建配置类对象,在类上添加@Component、@PropertySource、@ConfigurationProperties注解。

@Component是将该类交由spring管理,@PropertySource用来指定配置文件及解析Yaml格式,@ConfigurationProperties是将解析后的配置文件属性自动注入该类的属性。

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
@Component
@PropertySource(value = "classpath:my.yaml", factory = YamlPropertiesSourceFactory.class)
@ConfigurationProperties(prefix = "my")
public class MyProperties {
    private List<content> contents = new ArrayList<>();
    public List<content> getContents() {
        return contents;
    public void setContents(List<content> contents) {
        this.contents = contents;
class content {
    private String id;
    private String name;
    public String getId() {
        return id;
    public void setId(String id) {
        this.id = id;
    public String getName() {
        return name;
    public void setName(String name) {
        this.name = name;

@PropertySource注解是Spring用于加载配置文件,@PropertySource属性如下:

  • name:默认为空,不指定Spring自动生成
  • value:配置文件
  • ignoreResourceNotFound:没有找到配置文件是否忽略,默认false,4.0版本加入
  • encoding:配置文件编码格式,默认UTF-8 4.3版本才加入
  • factory:配置文件解析工厂,默认:PropertySourceFactory.class 4.3版本才加入,如果是之前的版本就需要手动注入配置文件解析Bean

Spring Boot 默认不支持@PropertySource读取yaml 文件,需要自定义PropertySourceFactory进行解析。

3、YamlPropertiesSourceFactory

创建YamlPropertiesSourceFactory类用来解析Yaml格式的文件。

import org.springframework.boot.env.YamlPropertySourceLoader;
import org.springframework.core.env.PropertySource;
import org.springframework.core.io.support.EncodedResource;
import org.springframework.core.io.support.PropertySourceFactory;
import java.io.IOException;
import java.util.List;
import java.util.Optional;
public class YamlPropertiesSourceFactory implements PropertySourceFactory {
    @Override
    public PropertySource<?> createPropertySource(String name, EncodedResource resource) throws IOException {
        String resourceName = Optional.ofNullable(name).orElse(resource.getResource().getFilename());
        List<PropertySource<?>> yamlSources = new YamlPropertySourceLoader().load(resourceName, resource.getResource());
        return yamlSources.get(0);

到此这篇关于SpringBoot解析指定Yaml配置文件的实现过程的文章就介绍到这了,更多相关SpringBoot解析Yaml配置文件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
  • Java 六类运算符详解
    Java 六类运算符详解
    2023-03-03
  • elasticsearch如何根据条件删除数据
    elasticsearch如何根据条件删除数据
    2023-03-03
  • java中优化大量if...else...方法总结
    java中优化大量if...else...方法总结
    2023-03-03
  • Java之HashMap.values()方法的误用解读
    Java之HashMap.values()方法的误用解读
    2023-03-03
  • Java中关于Map四种取值方式
    Java中关于Map四种取值方式
    2023-03-03
  • MyBatisPlus唯一索引批量新增或修改的实现方法
    MyBatisPlus唯一索引批量新增或修改的实现方法
    2023-03-03
  • SpringCloud读取Nacos配置中心报错及遇到的坑:Could not resolve placeholder ‘xxx’ in value ‘${xxx}
    SpringCloud读取Nacos配置中心报错及遇到的坑:Could n
    2023-03-03
  • java中对HashMap的put过程解读
    java中对HashMap的put过程解读
    2023-03-03
  • 美国设下计谋,用娘炮文化重塑日本,已影响至中国
    美国设下计谋,用娘炮文化重塑日本,已影响至中国
    2021-11-19
  • 时空伴随者是什么意思?时空伴随者介绍
    时空伴随者是什么意思?时空伴随者介绍
    2021-11-09
  • 工信部称网盘企业免费用户最低速率应满足基本下载需求,天翼云盘回应:坚决支持,始终
    工信部称网盘企业免费用户最低速率应满足基本下载需求,天翼云盘回应:坚决支持,始终
    2021-11-05
  • 2022年放假安排出炉:五一连休5天 2022年所有节日一览表
    2022年放假安排出炉:五一连休5天 2022年所有节日一览表
    2021-10-26
  • 电脑版 - 返回首页

    2006-2023 脚本之家 JB51.Net , All Rights Reserved.
    苏ICP备14036222号