Я пытаюсь создать приложение Spring без ссылки на какие-либо внешние файлы.Предполагается, что это будет модуль, который вы затем включите в качестве зависимости, сконфигурируете и будете использовать для подключения сервиса к существующей экосистеме.Вот как я это делаю:
Map<String, Object> properties = new HashMap<>();
properties.put("server.address", "0.0.0.0")
properties.put("server.port", 8080)
properties.put("spring.profiles.active", "cloud")
properties.put("spring.application.name", "someApp")
properties.put("spring.cloud.config.failFast", true)
properties.put("spring.cloud.config.discovery.enabled", true)
properties.put("spring.cloud.config.discovery.serviceId", "config")
properties.put("eureka.instance.preferIpAddress", true)
properties.put("eureka.instance.statusPageUrlPath", "/health")
new SpringApplicationBuilder()
.bannerMode(Banner.Mode.OFF)
.properties(properties)
.sources(SpringConfiguration.class)
.web(false)
.registerShutdownHook(true)
.build()
Затем я продолжаю указывать зону Eureka по умолчанию в команде запуска через переменные среды:
--env eureka_client_serviceUrl_defaultZone='http://some-host:8765/eureka/' --env SPRING_CLOUD_CONFIG_LABEL='dev' --env SPRING_CLOUD_INETUTILS_PREFERRED_NETWORKS='10.0'
Приложение успешно регистрируется в Eureka, но, к сожалению, он пытается извлечь конфигурацию до этого и ищет ее по URL-адресу по умолчанию (http://localhost:8888
) вместо того, чтобы извлекать IP-адрес сервера конфигурации из реестра.И да, это работает, если я помещу все эти свойства в файл bootstrap.yml
.Можно ли как-то заставить его работать без использования файловых ресурсов?