Spring忽略设置为默认属性的'Spring.cloud.config.discovery'

Spring忽略设置为默认属性的'Spring.cloud.config.discovery',spring,spring-cloud,spring-cloud-config,spring-config,Spring,Spring Cloud,Spring Cloud Config,Spring Config,我试图在不引用任何外部文件的情况下创建Spring应用程序。这应该是一个模块,然后将其作为依赖项包含、配置并用于将服务插入现有生态系统。我就是这样做的: Map<String, Object> properties = new HashMap<>(); properties.put("server.address", "0.0.0.0") properties.put("server.port", 8080) properties.put("spring.profiles

我试图在不引用任何外部文件的情况下创建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中成功注册,但不幸的是,它尝试在此之前获取配置,并在默认URL下查找它(
http://localhost:8888
)而不是从注册表获取配置服务器IP。是的,如果我将所有这些属性都放在
bootstrap.yml
文件中,它确实可以工作。我是否可以在不使用文件资源的情况下使其工作?

您正在使用SpringApplicationBuilder传递属性,SpringApplicationBuilder负责SpringApplication和ApplicationContext实例

根据文档,此处提供的属性将是ApplicationContext的一部分,而不是BootstrapContext。ApplicationContext是BootstrapContext的子级

您可以在这里阅读有关引导上下文的更多信息-

Bootstrap.yml/properties用于配置引导上下文

您可以查看这些属性来更改文件的名称或位置-

                 spring.cloud.bootstrap.name - bootstrap(default)
                 spring.cloud.bootstrap.location
您必须使用文件资源(yml或属性)

                 spring.cloud.bootstrap.name - bootstrap(default)
                 spring.cloud.bootstrap.location