在resources下创建my.yaml文件,“-”用来表示数组类型,一定要注意空格。
my:
contents:
- id: 12121
name: nadasd
- id: 3333
name: vfffff创建配置类对象,在类上添加@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进行解析。
创建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配置文件的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号