编程语言
首页 > 编程语言> > java – 当应用程序执行时,不使用application.yml中的spring.cloud.config中的设置

java – 当应用程序执行时,不使用application.yml中的spring.cloud.config中的设置

作者:互联网

我遇到了spring cloud的问题:当app正在执行时,我在application.yml中为spring.cloud.config设置了我的设置.让我在这里详细说明.
我想我的服务可以从远程ConfigServer获取设置.我已经将ConfigServer创建为带有注释@EnableConfigServer的spring boot应用程序.
之后我用下一个配置文件创建了客户端应用程序:

    application:
      name: mw
    cloud:
      config:
        enabled: true
        uri: http://172.17.42.1:8888
        fail-fast: true

主要课程:

    @EnableEurekaClient
    @SpringBootApplication
    public class MwApplication

和应用程序的额外配置:

    @Configuration
    @EnableJpaRepositories(basePackages = {"com.sample.repository"})
    @EnableTransactionManagement
    @EnableScheduling
    public class AppConfiguration

我还有下一个依赖项:

    spring-cloud-starter-eureka
    spring-cloud-config-client
    spring-boot-configuration-processor
    spring-boot-starter-data-jpa

当我执行我的客户端应用程序时,我收到此消息:ConfigServicePropertySourceLocator:无法找到PropertySource:GET请求中的I / O错误“http://localhost:8888/mw/default

该应用程序尝试从默认的uri(localhost)获取数据,而不是从我的设置中使用uri.我在调试模式下查看了应用程序,看到org.springframework.cloud.config.client.ConfigServiceBootstrapConfiguration正在创建具有默认属性的ConfigClientProperties,并且未使用application.yml中的设置.

我究竟做错了什么?
谢谢.

解决方法:

您需要将以下内容添加到application.yml文件中:

spring:
    cloud:
        config:
            enabled: true

根据注释链,您还需要将属性添加到bootstrap.yml而不是application.yml.原因是前者在春季启动周期中被加载到后者之前.这是另一篇由用户Michael Isvy解释原因的SO帖子,并在下面复制后代:What is the diference between putting a property on application.yml or bootstrap.yml in spring boot?

I have just asked the Spring Cloud guys and thought I should share the info I have here.

bootstrap.yml is loaded before application.yml.

It is typically used for the following:

  • when using Spring Cloud Config Server, you should specify spring.application.name and spring.cloud.config.server.git.uri inside bootstrap.yml
  • some encryption/decryption information

Technically, bootstrap.yml is loaded by a parent Spring ApplicationContext. That parent ApplicationContext is loaded before the one that uses application.yml.

标签:java,spring,spring-boot-2,microservices,spring-cloud-2
来源: https://codeday.me/bug/20190628/1311565.html