繁体   English   中英

在spring boot项目中,如何将application.yaml加载到Java Properties中

[英]In a spring boot project, how to load application.yaml into Java Properties

如果我在application.yaml中有以下属性:

myPro:
   prop1: prop1value
   prop2: prop2value
....

有没有办法将其加载到Java Properties对象中?

默认情况下,Spring已将所有这些应用程序属性放在其环境中,这是Properties的包装,例如:

@Autowired
private Environment environment;

public void stuff() {
    environment.getProperty("myPro.prop1");
    environment.getProperty("myPro.prop2");
}

但是,如果您只想使用这些值,则可以始终使用@Value注释,例如:

@Value("${myPro.prop1}")
private String prop1;
@Value("${myPro.prop2}")
private String prop2;

最后,如果你真的想要一个只有myPro所有东西的Properties对象,你可以创建以下bean:

@ConfigurationProperties(prefix = "myPro")
@Bean
public Properties myProperties() {
    return new Properties();
}

现在您可以自动装配属性并使用它们:

@Autowired
@Qualifier("myProperties")
private Properties myProperties;

public void stuff() {
    myProperties.getProperty("prop1");
    myProperties.getProperty("prop2");
}

在这种情况下,您不一定要将它绑定到Properties ,但您可以使用自定义POJO,只要它具有字段名prop1和另一个字段名prop2

这三个选项也列在文档中

可以使用@Value注释将属性值直接注入到bean中,通过Spring的Environment抽象访问或通过@ConfigurationProperties绑定到结构化对象。

我使用pom.xml上的依赖项解决了我的问题

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-security</artifactId>
</dependency>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM