在Sping Boot 应用程序中,我希望能够在application.properties
文件中声明域对象列表,并将它们作为List<TheDomainObject>
和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
也就是说,我希望每个人的属性都被分组在一个键下。我可以添加任意多的键(人)。
我不需要直接引用这些属性,但我想声明一个Domain对象,如下所示(缩写):
class Person {
String id; (this would be the 'key', i.e. 'john', 'adam')
String name;
Path homeDirectory;
Path privateKeyFile;
// boilerplate
}
然后通过Configuration
接收一个List<Person>
。自动化程度越高越好,但如果需要的话,我会非常乐意实现构建器或一些额外的转换器逻辑。
我找不到任何关于这类事情的文档,但是我在log4j中看到过,例如,在那里你可以为任何包名动态添加日志属性,所以至少可以检索这些键。
我知道我可以用不同的方法来实现这一点,例如使用data.sql
导入脚本,但是在我的例子中,最理想的是使用单个属性文件(或yaml)格式。
4条答案
按热度按时间1sbrub3j1#
为什么不使用id作为显式属性?
例如(yaml):
这将在
List<Person> persons;
中解决uemypmqf2#
为什么不使用
@ConfigurationProperties
,它在这种情况下会对您有所帮助,对吗?详情请参阅
https://www.techiedelight.com/map-spring-boot-properties-to-pojo
https://www.baeldung.com/configuration-properties-in-spring-boot
niwlg2el3#
是否可以使用www.example.com格式进行此定义application.properties?
pgky5nke4#
使用www.example.com格式的定义application.properties
个人=[{id=约翰,姓名=约翰史密斯,主目录=/用户/约翰史密斯},{id=亚当,姓名=亚当贝尔,主目录=/用户/亚当贝尔}]