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

标签 java spring spring-boot properties

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

相关文章:

java - 如何获得 RecyclerView 的偏移量?

java - RMI 序列化/编码

java - Spring数据查询示例

java - 错误无法加载资源: the server responded with a status of 403 () en angular

spring - application.yml 中的环境变量不适用于以空格开头的默认值

java - Kafka通过微服务,订阅不存在的主题

java - Eclipse插件中是否需要配置资源

java - 使用 ESAPI 进行编码/解码

java - Spring 2.0.0.RELEASE 中的 Mockito Bug

java - Spring Boot 项目 - 编写 JPQL (Intellij) 的问题