spring 目录树结构的Sping Boot YAML配置-使用什么类?

ogq8wdun  于 2023-02-11  发布在  Spring
关注(0)|答案(2)|浏览(107)

我想在Sping Boot 应用程序.yaml文件中指定一个通用文件/目录树结构:

spring.datasource.url: "jdbc:mysql://localhost/test"

myapp.source:
  dir1:
    dir1a:
      file1:
      file2:
  dir2:
    file3:
    file4:

@ConfigurationProperties("myapp.source")中我可以使用什么样的类来加载这个配置?看起来像是某种递归的“Map of Map”?

rpppsulh

rpppsulh1#

如果您可以接受这样的YAML结构:

myapp:
  source:
    directories:
      - name: dir1
        directories:
          - name: dir1a
            files:
              - file1
              - file2
      - name: dir2
        files:
          - file3
          - file4

那么这些类可以表示结构:
x一个一个一个一个x一个一个二个x
这是SourceProperties从yaml构建的样子:

根据您的需要,这些类可以有各种方法。如果您需要更多关于它们的信息,甚至可以使文件成为对象(而不是String)。

avwztpqn

avwztpqn2#

另一种替代方案是让YAML像这样:

myapp:
  source:
    dir1:
      directories:
        dir1a:
          files:
           - file1
           - file2
    dir2:
      files:
        - file3
        - file4
      directories:
        dir2a:
          files:
            - file5

课程是这样的:

@Getter
@Setter
@ToString
@ConfigurationProperties("myapp")
@Configuration
public class SourceProperties {
    private Map<String, Directory> source;
}

@Getter
@Setter
@ToString
public class Directory {
    private Map<String, Directory> directories;
    private List<String> files;
}

相关问题