Spring Cloud Config Client:从错误的服务器获取配置

时间:2018-02-09 03:04:58

标签: spring-cloud-config

当我运行Spring Cloud Config Client项目的config-client时,我发现了以下错误:

2018-02-09 10:31:09.885  INFO 13933 --- [           main] c.c.c.ConfigServicePropertySourceLocator : Fetching config from server at: http://localhost:8888
2018-02-09 10:31:10.022  WARN 13933 --- [           main] c.c.c.ConfigServicePropertySourceLocator : Could not locate PropertySource: I/O error on GET request for "http://localhost:8888/config-client/dev/master": 拒绝连接 (Connection refused); nested exception is java.net.ConnectException: 拒绝连接 (Connection refused)
2018-02-09 10:31:10.026  INFO 13933 --- [           main] c.y.c.ConfigClientApplication            : No active profile set, falling back to default profiles: default
2018-02-09 10:31:10.040  INFO 13933 --- [           main] ationConfigEmbeddedWebApplicationContext : Refreshing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@33b1c5c5: startup date [Fri Feb 09 10:31:10 CST 2018]; parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1ffe63b9
2018-02-09 10:31:10.419  INFO 13933 --- [           main] o.s.cloud.context.scope.GenericScope     : BeanFactory id=65226c2b-524f-3b14-8e17-9fdbc9f72d85
2018-02-09 10:31:10.471  INFO 13933 --- [           main] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$25380e89] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2018-02-09 10:31:10.688  INFO 13933 --- [           main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat initialized with port(s): 10001 (http)
2018-02-09 10:31:10.697  INFO 13933 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2018-02-09 10:31:10.698  INFO 13933 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet Engine: Apache Tomcat/8.5.27
2018-02-09 10:31:10.767  INFO 13933 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2018-02-09 10:31:10.768  INFO 13933 --- [ost-startStop-1] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 727 ms
2018-02-09 10:31:10.861  INFO 13933 --- [ost-startStop-1] o.s.b.w.servlet.ServletRegistrationBean  : Mapping servlet: 'dispatcherServlet' to [/]
2018-02-09 10:31:10.864  INFO 13933 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: 'characterEncodingFilter' to: [/*]
2018-02-09 10:31:10.864  INFO 13933 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: 'hiddenHttpMethodFilter' to: [/*]
2018-02-09 10:31:10.864  INFO 13933 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: 'httpPutFormContentFilter' to: [/*]
2018-02-09 10:31:10.865  INFO 13933 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: 'requestContextFilter' to: [/*]
2018-02-09 10:31:10.895  WARN 13933 --- [           main] ationConfigEmbeddedWebApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'configClientApplication': Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'content' in value "${content}"
2018-02-09 10:31:10.896  INFO 13933 --- [           main] o.apache.catalina.core.StandardService   : Stopping service [Tomcat]
2018-02-09 10:31:10.914  INFO 13933 --- [           main] utoConfigurationReportLoggingInitializer : 

启动ApplicationContext时出错。要显示自动配置报告,请在启用“debug”的情况下重新运行应用程序。 2018-02-09 10:31:10.923 ERROR 13933 --- [main] o.s.boot.SpringApplication:应用程序启动失败

显然,配置服务器是错误的。但是,Spring Cloud Config Server在localhost:10000 /运行,项目的application.yml(config-client)在下面。为什么spring.cloud.config.uri不起作用?

application.yml [config-client]

server:
  port: 10001
spring:
  application:
    name: config-client
  cloud:
    config:
      label: master
      profile: dev
      uri: http://localhost:10000

3 个答案:

答案 0 :(得分:3)

未来的读者,如回答here一样,在使用Spring Cloud Config Server时,我们应该在其中指定基本的 bootstrap 设置,例如:spring.application.namespring.cloud.config.uri bootstrap.yml (或“ bootstrap.properties”)。

启动时,Spring Cloud使用应用程序的名称对配置服务器进行HTTP调用,并检索该应用程序的配置。

也就是说,由于我们正在使用Spring Cloud Config Server外部化设置,因此 application.yml (或“ application.properties”)中定义的任何 default 配置都将启动时在引导过程中被覆盖

答案 1 :(得分:1)

您可以使用bootstrap.yml在启动应用程序之前加载配置服务器。 只需添加配置服务器和应用程序名称

spring:
  application:
    name: clientTest
  cloud:
    config:
      uri:  http://localhost:8889
      enabled: true      
      fail-fast: true

答案 2 :(得分:0)

IntelliJ用户:在运行/调试配置中添加以下替代参数:

名称:optional: true

值:spring.cloud.config.uri