您好,登錄后才能下訂單哦!
這篇“SpringBoot解析怎么指定Yaml配置文件”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“SpringBoot解析怎么指定Yaml配置文件”文章吧。
在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配置文件”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。