Java 在Spring application.properties文件中声明对象列表
在Spring Boot应用程序中,我希望能够在Java 在Spring application.properties文件中声明对象列表,java,spring,spring-boot,properties,Java,Spring,Spring Boot,Properties,在Spring Boot应用程序中,我希望能够在应用程序.properties文件中声明域对象的列表,并将它们作为列表作为Bean读取 例如,假设我在application.properties中有以下内容: com.application.person.john.name=John Smith com.application.person.john.home-directory=/Users/john.smith com.application.person.john.private-key-
应用程序.properties
文件中声明域对象的列表,并将它们作为列表
作为Bean
读取
例如,假设我在application.properties
中有以下内容:
com.application.person.john.name=John Smith
com.application.person.john.home-directory=/Users/john.smith
com.application.person.john.private-key-file=/Users/john.smith/.ssh/id_rsa
com.application.person.adam.name=Adam Bell
com.application.person.adam.home-directory=/Users/adam.bell
com.application.person.adam.private-key-file=/Users/adam.bell/.ssh/id_rsa
etc
例如,我希望每个人的属性都分组在一个键下。我可以添加任意多的键(人)
我不需要直接引用这些属性,但我想声明一个域对象,如下所示(缩写):
然后通过配置
接收列表
。自动化程度越高越好,但如果需要的话,我会非常乐意实现构建器或一些额外的转换器逻辑
我找不到这类东西的任何文档,但我在log4j中看到过,例如,您可以为任何包名动态添加日志属性,因此至少可以检索这些键
我知道我可以用不同的方式来实现,例如使用
data.sql
导入脚本,但是在我的例子中,最好是使用单个属性文件(或yaml)格式。为什么不使用id作为显式属性
例如(yaml):
这将在
列表中解决代码>为什么不使用@ConfigurationProperties
在这种情况下它会帮助你,对吗
详情请参阅
那太理想了。如何使用@ConfigurationProperties将其解析为列表
。见:
class Person {
String id; (this would be the 'key', i.e. 'john', 'adam')
String name;
Path homeDirectory;
Path privateKeyFile;
// boilerplate
}
com:
application:
persons:
-
id: john
name: John Smith
home-directory: /Users/john.smith
-
id: adam
name: Adam Bell
home-directory: /Users/adam.bell