Клиент Spring Cloud Config с динамическим URI начальной загрузки во время выполнения? - PullRequest
0 голосов
/ 06 ноября 2019

С учетом клиента конфигурации bootstrap.yml:

spring:
  ...
  cloud:
    config:
      uri: ${SPRING_CONFIG_URI:http://localhost:9000}
      fail-fast: true

Переменная среды SPRING_CONFIG_URI должна быть установлена ​​во время выполнения. Мы можем обсудить этот запах кода в другой раз, но для этого упражнения этот URI известен только при запуске службы (он связан с выборкой рандомизированных записей SRV).

Существует ли способ Spring для установки/ переопределить некоторые из bootstrap.yaml параметров?

Вот что я попробовал:

@SpringBootApplication
public class Application {
    public static void main( String[] args ) throws Exception
    {
        String configServerPort = DnsHelper.resolveSrv("configserver.local");

        // This doesn't work
        System.setProperty("SPRING_CONFIG_URI", configServerPort);

        // This doesn't work
        // Use reflection to change the in-memory environment variables
        // @see https://stackoverflow.com/a/7201825/1938889
        setEnv( Map.of( "SPRING_CONFIG_URI", configServerPort ) );

        // After the environment variable is set, then start the service
        Application.run( Application.class, args );
    }
    ...
...