gpt4 book ai didi

java - 在 Spring application.properties 文件中声明对象列表

转载 作者:行者123 更新时间:2023-12-02 09:08:02 25 4
gpt4 key购买 nike

在 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com