这篇“SpringBoot解析怎么指定Yaml配置文件”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“SpringBoot解析怎么指定Yaml配置文件”文章吧。
1、自定义配置文件
在resources下创建my.yaml文件,“-”用来表示数组类型,一定要注意空格。
my: 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配置文件”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网行业资讯频道。