这篇“SpringBoot解析怎么指定Yaml配置文件”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大...
这篇“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配置文件”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注捷杰建站行业资讯频道。