повторное использование свойств конфигурации пружины во вложенной карте - PullRequest
0 голосов
/ 09 марта 2020

У меня есть приложение Spring Boot, которое поддерживает мультитенантность. Я sh буду поддерживать глобальную и индивидуальную конфигурацию множества пользовательских свойств конфигурации. Для каждого свойства можно настроить глобальное значение, но для определенного c арендатора это значение может быть переопределено.

В настоящее время у меня есть только глобальные свойства, использующие некоторые классы, помеченные @ConfigurationProperties. Например,

    @ConfigurationProperties("props1")
    class Props1 {
        ...
    }

    @ConfigurationProperties("props2")
    class Props2 {
        ...
    }

    @ConfigurationProperties("props3")
    class Props3 {
        ...
    }

Я хотел бы иметь возможность настроить свойства следующим образом:

props1.a=...
props1.b=...

props2.x=...
props2.y=...

props3.z=...

tenant.some-tenant-id.props1.b=...
tenant.some-tenant-id.props3.z=...

tenant.some-other-tenant-id.props2.x=...

Я рассматриваю возможность добавления другого класса @ConfigurationProperties, например, с префиксом tenant и с для каждого из существующих классов Map, где ключом будет имя арендатора, например:

@ConfigurationProperties("tenant")
class TenantSpecificProps {
   private Map<String, Props1> props1;
   private Map<String, Props2> props2;
   private Map<String, Props3> props3;
   ...
}

Однако я обеспокоен тем, что повторное использование классов, помеченных @ConfigurationProperties для карт может привести к проблемам позже, так как это не обычный способ, которым эти классы используются в Spring. Кроме того, мне нужно объединить глобальные значения и значения для каждого арендатора (для каждого владельца, переопределяющего глобальные значения).

Это правильный подход и / или существует более идиоматический c способ выполнения это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...