java—在springboot中从多个具有相同结构/模式的文件加载配置

lf5gs5x2  于 2021-07-13  发布在  Java
关注(0)|答案(0)|浏览(169)

我们遇到这样一种情况:多个scrum团队使用springbootms将一个共享的配置文件加载到数据库中,这个文件正在增长&变得不可维护。所以我们想把这个配置文件分解成多个文件。尽管每个文件将使用相同的模式和结构。
当配置文件都在一个文件中时,spring boot ms将其加载到对象模型中,对象模型是pojo使用@configurationproperties注解表示配置文件结构的。
下面是一个示例配置文件供参考-

{
  "app-config": {
    "consumers": [
      {
        "username": "Consumer-Name",
        "credentials": {
          "type": "credentials_type",
          "properties": {
            "client_id": "client_id",
            "client_secret": "client_secret",
            "name": "client_name"
          }
        }
      }
    ],
    "plugins": [
      {
        "config.host": "fluentd",
        "config.port": "5170",
        "config.timeout": "10000",
        "name": "tcp-log"
      },
      {
        "config.generator": "uuid",
        "config.header_name": "CorrelationId",
        "name": "correlation-id"
      }
    ],
    "services": [
      {
        "properties": {
          "name": "Service-Name",
          "url": "https://Service-URL"
        }
      }
    ]
  }
}

下面是将配置加载到pojo中的示例代码-

@Component
@ConfigurationProperties(prefix = "app-config")
@RefreshScope
@Validated
public class Config {

    @NotNull @NotEmpty
    private List<ServiceConfig> services;

    private List<ConsumerConfig> consumers;

    private List<Map<String, String>> plugins;

    public List<ServiceConfig> getServices() {
        return services;
    }

    public void setServices(List<ServiceConfig> services) {
        this.services = services;
    }

    public List<ConsumerConfig> getConsumers() {
        return consumers;
    }

    public void setConsumers(List<ConsumerConfig> consumers) {
        this.consumers = consumers;
    }

    public List<Map<String, String>> getPlugins() {
        return plugins;
    }

    public void setPlugins(List<Map<String, String>> plugins) {
        this.plugins = plugins;
    }
}

正如您在上面的示例配置文件中所看到的,它捕获了不同团队/项目的使用者、服务和插件列表,因此当不同团队添加各自的配置时,该文件会增长。其思想是将config分解为多个文件,以便其更易于维护。
这是供参考的简化示例配置&实际配置更为复杂,具有复杂的对象层次结构。尽管就这个问题而言,这个配置文件的结构/模式的复杂性并不重要。
有谁能建议我们如何加载多个配置文件,遵循spring boot ms中相同的模式和结构,以便它仍然聚合,就好像它是从单个配置文件加载到单个pojo- public class Config ,如上所述?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题