在 Spring 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
}
然后收到 List<Person>
通过Configuration
。越自动化越好,但如果需要的话,我非常乐意实现构建器或一些额外的转换器逻辑。
我找不到这种事情的任何文档,但我在 log4j 中看到过它,例如,您可以在其中动态添加任何包名称的日志记录属性,所以它一定是可能的至少检索这些 key 。
我知道我可以用不同的方式做到这一点,例如使用 data.sql
导入脚本,但就我而言,将其采用单个属性文件(或 yaml)格式是非常理想的。
最佳答案
为什么不使用 id 作为显式属性?
例如(yaml):
com:
application:
persons:
-
id: john
name: John Smith
home-directory: /Users/john.smith
-
id: adam
name: Adam Bell
home-directory: /Users/adam.bell
这将在 List<Person> persons;
中解决
关于java - 在 Spring application.properties 文件中声明对象列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59649673/