Вставить список yaml в качестве аргумента jvm? - PullRequest
0 голосов
/ 15 мая 2019

Попытка использовать фильтр IP-шаблонов, предоставляемый платформой Micronaut.То, что я хочу, это ввести конфигурацию при запуске приложения.Прямо сейчас файл yaml принимает список IP-адресов в качестве входных данных.Но чтобы внедрить конфигурацию во время выполнения, как я могу передать список IP-адресов этому свойству yaml.

Текущий сценарий

micronaut:
  security:
    enabled: true
    ip-patterns:
      - 127.0.0.1
      - 192.168.1.*

Не уверен, что приведенная ниже вещь будет работать

Ожидается

micronaut:
  security:
    enabled: true
    ip-patterns:${list_of_Ip's}

1 Ответ

0 голосов
/ 15 мая 2019

ip-patterns - это список, как вы знаете, и вы не можете представить ${} как список. Вы можете создать собственный источник свойств для преобразования переменной среды в конфигурацию.

Например:

public class Application {

    public static void main(String[] args) {
        String patternsEnv = System.getenv("SOME_ENV");
        List<String> ipPatterns = Arrays.stream(patternsEnv.split(","))
                .map(StringUtils::trimToNull)
                .filter(Objects::nonNull)
                .collect(Collectors.toList());
        Map<String, Object> map = new HashMap<>(1);
        map.put("micronaut.security.ip-patterns", ipPatterns);
        PropertySource propertySource = new MapPropertySource("ip-patterns", map) {

            @Override
            public int getOrder() {
                return 0;
            }
        };

        Micronaut.build(null)
                .mainClass(Application.class)
                .propertySources(propertySource)
                .start();
    }
}
...