为什么spring config server client失败从配置服务器获取配置?

时间:2016-09-22 08:38:59

标签: spring-cloud spring-cloud-config

我使用gitlab作为配置远程设置了一个本地spring boot配置服务器。它工作正常。我设置了一个配置服务器客户端Web应用程序,它可以成功连接到此配置服务器,并通过此配置服务器从git repro获取配置。但现在我想对我的配置服务器进行集成测试,并将客户端Web应用程序移动到配置服务器的测试目录,并将客户端的spring.application.config.name修改为“configserver-tes”,以便客户端Web app不会读取主类路径中的默认application.yml,也不会读取测试类路径中的bootstrap.yml。在这种情况下,两个Web应用程序都可以从不同的上下文和端口开始。问题是客户端Web应用程序无法从配置服务器读取配置。你能告诉我怎么解决这个问题?或者我该如何调试它。感谢。

错误日志:

2016-09-22 16:49:06,477 DEBUG jndi [main] Created initial context delegate for local namespace:org.eclipse.jetty.jndi.local.localContextRoot@dffa30b
2016-09-22 16:49:06,477 DEBUG jndi [main] Looking up name="SPRINGCLOUDCONFIGSERVERBOOTSTRAP"
2016-09-22 16:49:06,477 DEBUG o.s.j.JndiPropertySource [main] JNDI lookup for name [SPRINGCLOUDCONFIGSERVERBOOTSTRAP] threw NamingException with message: null. Returning null.
2016-09-22 16:49:06,477 TRACE o.s.b.a.c.OnPropertyCondition [main] Condition OnPropertyCondition on org.springframework.cloud.config.server.bootstrap.ConfigServerBootstrapConfiguration$LocalPropertySourceLocatorConfiguration did not match due to @ConditionalOnProperty missing required properties spring.cloud.config.server.bootstrap
2016-09-22 16:49:06,477 DEBUG o.s.b.f.s.DefaultListableBeanFactory [main] Returning cached instance of singleton bean 'autoConfigurationReport'
2016-09-22 16:49:06,521 DEBUG o.s.c.t.c.AnnotationAttributesReadingVisitor [main] Failed to class-load type while reading annotation metadata. This is a non-fatal error, but certain annotation metadata may be unavailable.
java.lang.ClassNotFoundException: org.springframework.retry.annotation.EnableRetry
        at java.net.URLClassLoader.findClass(URLClassLoader.java:381) ~[?:1.8.0_101]
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[?:1.8.0_101]
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) ~[?:1.8.0_101]
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[?:1.8.0_101]
        at org.springframework.core.type.classreading.RecursiveAnnotationAttributesVisitor.visitEnd(RecursiveAnnotationAttributesVisitor.java:47) [spring-core-4.2.6.RELEASE.jar:4.2.6.RELEASE]
        at org.springframework.asm.ClassReader.readAnnotationValues(ClassReader.java:1802) [spring-core-4.2.6.RELEASE.jar:4.2.6.RELEASE]
        at org.springframework.asm.ClassReader.accept(ClassReader.java:642) [spring-core-4.2.6.RELEASE.jar:4.2.6.RELEASE]
        at org.springframework.asm.ClassReader.accept(ClassReader.java:508) [spring-core-4.2.6.RELEASE.jar:4.2.6.RELEASE]
        at org.springframework.core.type.classreading.SimpleMetadataReader.<init>(SimpleMetadataReader.java:64) [spring-core-4.2.6.RELEASE.jar:4.2.6.RELEASE]
        at org.springframework.core.type.classreading.SimpleMetadataReaderFactory.getMetadataReader(SimpleMetadataReaderFactory.java:98) [spring-core-4.2.6.RELEASE.jar:4.2.6.RELEASE]
        at org.springframework.core.type.classreading.CachingMetadataReaderFactory.getMetadataReader(CachingMetadataReaderFactory.java:102) [spring-core-4.2.6.RELEASE.jar:4.2.6.RELEASE]
        at org.springframework.core.type.classreading.SimpleMetadataReaderFactory.getMetadataReader(SimpleMetadataReaderFactory.java:93) [spring-core-4.2.6.RELEASE.jar:4.2.6.RELEASE]
        at org.springframework.context.annotation.ConfigurationClassParser.asSourceClass(ConfigurationClassParser.java:621) [spring-context-4.2.6.RELEASE.jar:4.2.6.RELEASE]
        at org.springframework.context.annotation.ConfigurationClassParser.asSourceClass(ConfigurationClassParser.java:593) [spring-context-4.2.6.RELEASE.jar:4.2.6.RELEASE]
        at org.springframework.context.annotation.ConfigurationClassParser$SourceClass.getMemberClasses(ConfigurationClassParser.java:750) [spring-context-4.2.6.RELEASE.jar:4.2.6.RELEASE]
        at org.springframework.context.annotation.ConfigurationClassParser.processMemberClasses(ConfigurationClassParser.java:328) [spring-context-4.2.6.RELEASE.jar:4.2.6.RELEASE]
        at org.springframework.context.annotation.ConfigurationClassParser.doProcessConfigurationClass(ConfigurationClassParser.java:249) [spring-context-4.2.6.RELEASE.jar:4.2.6.RELEASE]
        at org.springframework.context.annotation.ConfigurationClassParser.processConfigurationClass(ConfigurationClassParser.java:232) [spring-context-4.2.6.RELEASE.jar:4.2.6.RELEASE]
        at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:199) [spring-context-4.2.6.RELEASE.jar:4.2.6.RELEASE]
        at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:168) [spring-context-4.2.6.RELEASE.jar:4.2.6.RELEASE]
        at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:321) [spring-context-4.2.6.RELEASE.jar:4.2.6.RELEASE]
        at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:243) [spring-context-4.2.6.RELEASE.jar:4.2.6.RELEASE]
        at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:273) [spring-context-4.2.6.RELEASE.jar:4.2.6.RELEASE]
        at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:98) [spring-context-4.2.6.RELEASE.jar:4.2.6.RELEASE]
        at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:678) [spring-context-4.2.6.RELEASE.jar:4.2.6.RELEASE]
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:520) [spring-context-4.2.6.RELEASE.jar:4.2.6.RELEASE]
        at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:766) [spring-boot-1.3.5.RELEASE.jar:1.3.5.RELEASE]
        at org.springframework.boot.SpringApplication.createAndRefreshContext(SpringApplication.java:361) [spring-boot-1.3.5.RELEASE.jar:1.3.5.RELEASE]
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:307) [spring-boot-1.3.5.RELEASE.jar:1.3.5.RELEASE]
        at org.springframework.boot.builder.SpringApplicationBuilder.run(SpringApplicationBuilder.java:134) [spring-boot-1.3.5.RELEASE.jar:1.3.5.RELEASE]
        at org.springframework.cloud.bootstrap.BootstrapApplicationListener.bootstrapServiceContext(BootstrapApplicationListener.java:140) [spring-cloud-context-1.1.1.RELEASE.jar:1.1.1.RELEASE]
        at org.springframework.cloud.bootstrap.BootstrapApplicationListener.onApplicationEvent(BootstrapApplicationListener.java:84) [spring-cloud-context-1.1.1.RELEASE.jar:1.1.1.RELEASE]
        at org.springframework.cloud.bootstrap.BootstrapApplicationListener.onApplicationEvent(BootstrapApplicationListener.java:62) [spring-cloud-context-1.1.1.RELEASE.jar:1.1.1.RELEASE]
        at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:166) [spring-context-4.2.6.RELEASE.jar:4.2.6.RELEASE]
        at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:138) [spring-context-4.2.6.RELEASE.jar:4.2.6.RELEASE]
        at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:121) [spring-context-4.2.6.RELEASE.jar:4.2.6.RELEASE]
        at org.springframework.boot.context.event.EventPublishingRunListener.publishEvent(EventPublishingRunListener.java:111) [spring-boot-1.3.5.RELEASE.jar:1.3.5.RELEASE]
        at org.springframework.boot.context.event.EventPublishingRunListener.environmentPrepared(EventPublishingRunListener.java:65) [spring-boot-1.3.5.RELEASE.jar:1.3.5.RELEASE]
        at org.springframework.boot.SpringApplicationRunListeners.environmentPrepared(SpringApplicationRunListeners.java:54) [spring-boot-1.3.5.RELEASE.jar:1.3.5.RELEASE]
        at org.springframework.boot.SpringApplication.createAndRefreshContext(SpringApplication.java:330) [spring-boot-1.3.5.RELEASE.jar:1.3.5.RELEASE]
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:307) [spring-boot-1.3.5.RELEASE.jar:1.3.5.RELEASE]
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:1191) [spring-boot-1.3.5.RELEASE.jar:1.3.5.RELEASE]
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:1180) [spring-boot-1.3.5.RELEASE.jar:1.3.5.RELEASE]
        at com.yrd.configserver.test.ConfigserverClient.main(ConfigserverClient.java:30) [test-classes/:?]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_101]
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_101]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_101]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_101]
        at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144) [idea_rt.jar:?]
2016-09-22 16:49:06,542 TRACE o.s.b.a.c.OnClassCondition [main] Condition OnClassCondition on org.springframework.cloud.config.client.ConfigServiceBootstrapConfiguration$RetryConfiguration did not match due to required @ConditionalOnClass classes not found: org.springframework.retry.annotation.Retryable,org.aspectj.lang.annotation.Aspect
2016-09-22 16:49:06,543 DEBUG o.s.b.f.s.DefaultListableBeanFactory [main] Returning cached instance of singleton bean 'autoConfigurationReport'
2016-09-22 16:49:06,559 TRACE o.s.b.a.c.OnClassCondition [main] Condition OnClassCondition on org.springframework.cloud.bootstrap.encrypt.EncryptionBootstrapConfiguration matched due to @ConditionalOnClass classes found: org.springframework.security.crypto.encrypt.TextEncryptor
2016-09-22 16:49:06,559 DEBUG o.s.b.f.s.DefaultListableBeanFactory [main] Returning cached instance of singleton bean 'autoConfigurationReport'
2016-09-22 16:49:06,570 TRACE o.s.b.a.c.OnClassCondition [main] Condition OnClassCondition on org.springframework.cloud.bootstrap.encrypt.EncryptionBootstrapConfiguration$VanillaEncryptionConfiguration did not match due to required @ConditionalOnMissing classes found: org.springframework.security.rsa.crypto.RsaSecretEncryptor
2016-09-22 16:49:06,570 DEBUG o.s.b.f.s.DefaultListableBeanFactory [main] Returning cached instance of singleton bean 'autoConfigurationReport'
2016-09-22 16:49:06,570 TRACE o.s.b.a.c.OnClassCondition [main] Condition OnClassCondition on org.springframework.cloud.bootstrap.encrypt.EncryptionBootstrapConfiguration$RsaEncryptionConfiguration matched due to @ConditionalOnClass classes found: org.springframework.security.rsa.crypto.RsaSecretEncryptor
2016-09-22 16:49:06,571 DEBUG o.s.b.f.s.DefaultListableBeanFactory [main] Returning cached instance of singleton bean 'autoConfigurationReport'
2016-09-22 16:49:06,571 TRACE o.s.c.e.PropertySourcesPropertyResolver [main] getProperty("encrypt.keyStore.location", String)
2016-09-22 16:49:06,571 DEBUG o.s.c.e.PropertySourcesPropertyResolver [main] Searching for key 'encrypt.keyStore.location' in [bootstrap]
2016-09-22 16:49:06,571 DEBUG o.s.c.e.PropertySourcesPropertyResolver [main] Searching for key 'encrypt.keyStore.location' in [servletConfigInitParams]
2016-09-22 16:49:06,571 DEBUG o.s.c.e.PropertySourcesPropertyResolver [main] Searching for key 'encrypt.keyStore.location' in [servletContextInitParams]
2016-09-22 16:49:06,571 DEBUG o.s.c.e.PropertySourcesPropertyResolver [main] Searching for key 'encrypt.keyStore.location' in [jndiProperties]
2016-09-22 16:49:06,571 DEBUG o.s.j.JndiTemplate [main] Looking up JNDI object with name [java:comp/env/encrypt.keyStore.location]
2016-09-22 16:49:06,571 DEBUG jndi [main] InitialContextFactory.getInitialContext()
2016-09-22 16:49:06,571 DEBUG jndi [main] Created initial context delegate for local namespace:org.eclipse.jetty.jndi.local.localContextRoot@f8f56b9
] not found - trying original name [SPRINGCLOUDCONFIGSERVERBOOTSTRAP]. javax.naming.NameNotFoundException; remaining name 'env/SPR
INGCLOUDCONFIGSERVERBOOTSTRAP'
2016-09-22 16:49:06,477 DEBUG o.s.j.JndiTemplate [main] Looking up JNDI object with name [SPRINGCLOUDCONFIGSERVERBOOTSTRAP]
2016-09-22 16:49:06,477 DEBUG jndi [main] InitialContextFactory.getInitialContext()
2016-09-22 16:49:06,477 DEBUG jndi [main] Created initial context delegate for local namespace:org.eclipse.jetty.jndi.local.localC
ontextRoot@dffa30b
2016-09-22 16:49:06,477 DEBUG jndi [main] Looking up name="SPRINGCLOUDCONFIGSERVERBOOTSTRAP"
2016-09-22 16:49:06,477 DEBUG o.s.j.JndiPropertySource [main] JNDI lookup for name [SPRINGCLOUDCONFIGSERVERBOOTSTRAP] threw Naming
Exception with message: null. Returning null.
2016-09-22 16:49:06,477 TRACE o.s.b.a.c.OnPropertyCondition [main] Condition OnPropertyCondition on org.springframework.cloud.conf
ig.server.bootstrap.ConfigServerBootstrapConfiguration$LocalPropertySourceLocatorConfiguration did not match due to @ConditionalOn
Property missing required properties spring.cloud.config.server.bootstrap
2016-09-22 16:49:06,477 DEBUG o.s.b.f.s.DefaultListableBeanFactory [main] Returning cached instance of singleton bean 'autoConfigu
rationReport'
2016-09-22 16:49:06,521 DEBUG o.s.c.t.c.AnnotationAttributesReadingVisitor [main] Failed to class-load type while reading annotati
on metadata. This is a non-fatal error, but certain annotation metadata may be unavailable.
java.lang.ClassNotFoundException: org.springframework.retry.annotation.EnableRetry
        at java.net.URLClassLoader.findClass(URLClassLoader.java:381) ~[?:1.8.0_101]
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[?:1.8.0_101]
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) ~[?:1.8.0_101]
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[?:1.8.0_101]
        at org.springframework.core.type.classreading.RecursiveAnnotationAttributesVisitor.visitEnd(RecursiveAnnotationAttributesV
isitor.java:47) [spring-core-4.2.6.RELEASE.jar:4.2.6.RELEASE]
        at org.springframework.asm.ClassReader.readAnnotationValues(ClassReader.java:1802) [spring-core-4.2.6.RELEASE.jar:4.2.6.RE
LEASE]
        at org.springframework.asm.ClassReader.accept(ClassReader.java:642) [spring-core-4.2.6.RELEASE.jar:4.2.6.RELEASE]
        at org.springframework.asm.ClassReader.accept(ClassReader.java:508) [spring-core-4.2.6.RELEASE.jar:4.2.6.RELEASE]
        at org.springframework.core.type.classreading.SimpleMetadataReader.<init>(SimpleMetadataReader.java:64) [spring-core-4.2.6
.RELEASE.jar:4.2.6.RELEASE]
        at org.springframework.core.type.classreading.SimpleMetadataReaderFactory.getMetadataReader(SimpleMetadataReaderFactory.ja
va:98) [spring-core-4.2.6.RELEASE.jar:4.2.6.RELEASE]
        at org.springframework.core.type.classreading.CachingMetadataReaderFactory.getMetadataReader(CachingMetadataReaderFactory.
java:102) [spring-core-4.2.6.RELEASE.jar:4.2.6.RELEASE]
        at org.springframework.core.type.classreading.SimpleMetadataReaderFactory.getMetadataReader(SimpleMetadataReaderFactory.ja
va:93) [spring-core-4.2.6.RELEASE.jar:4.2.6.RELEASE]
        at org.springframework.context.annotation.ConfigurationClassParser.asSourceClass(ConfigurationClassParser.java:621) [spring-context-4.2.6.RELEASE.jar:4.2.6.RELEASE]
        at org.springframework.context.annotation.ConfigurationClassParser.asSourceClass(ConfigurationClassParser.java:593) [spring-context-4.2.6.RELEASE.jar:4.2.6.RELEASE]
        at org.springframework.context.annotation.ConfigurationClassParser$SourceClass.getMemberClasses(ConfigurationClassParser.java:750) [spring-context-4.2.6.RELEASE.jar:4.2.6.RELEASE]
        at org.springframework.context.annotation.ConfigurationClassParser.processMemberClasses(ConfigurationClassParser.java:328) [spring-context-4.2.6.RELEASE.jar:4.2.6.RELEASE]
        at org.springframework.context.annotation.ConfigurationClassParser.doProcessConfigurationClass(ConfigurationClassParser.java:249) [spring-context-4.2.6.RELEASE.jar:4.2.6.RELEASE]
        at org.springframework.context.annotation.ConfigurationClassParser.processConfigurationClass(ConfigurationClassParser.java:232) [spring-context-4.2.6.RELEASE.jar:4.2.6.RELEASE]
        at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:199) [spring-context-4.2.6.RELEASE.jar:4.2.6.RELEASE]
        at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:168) [spring-context-4.2.6.RELEASE.jar:4.2.6.RELEASE]
        at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:321) [spring-context-4.2.6.RELEASE.jar:4.2.6.RELEASE]
        at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:243) [spring-context-4.2.6.RELEASE.jar:4.2.6.RELEASE]
        at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:273) [spring-context-4.2.6.RELEASE.jar:4.2.6.RELEASE]
        at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:98) [spring-context-4.2.6.RELEASE.jar:4.2.6.RELEASE]
        at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:678) [spring-context-4.2.6.RELEASE.jar:4.2.6.RELEASE]
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:520) [spring-context-4.2.6.RELEASE.jar:4.2.6.RELEASE]
        at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:766) [spring-boot-1.3.5.RELEASE.jar:1.3.5.RELEASE]
        at org.springframework.boot.SpringApplication.createAndRefreshContext(SpringApplication.java:361) [spring-boot-1.3.5.RELEASE.jar:1.3.5.RELEASE]
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:307) [spring-boot-1.3.5.RELEASE.jar:1.3.5.RELEASE]
        at org.springframework.boot.builder.SpringApplicationBuilder.run(SpringApplicationBuilder.java:134) [spring-boot-1.3.5.RELEASE.jar:1.3.5.RELEASE]
        at org.springframework.cloud.bootstrap.BootstrapApplicationListener.bootstrapServiceContext(BootstrapApplicationListener.java:140) [spring-cloud-context-1.1.1.RELEASE.jar:1.1.1.RELEASE]
        at org.springframework.cloud.bootstrap.BootstrapApplicationListener.onApplicationEvent(BootstrapApplicationListener.java:84) [spring-cloud-context-1.1.1.RELEASE.jar:1.1.1.RELEASE]
        at org.springframework.cloud.bootstrap.BootstrapApplicationListener.onApplicationEvent(BootstrapApplicationListener.java:62) [spring-cloud-context-1.1.1.RELEASE.jar:1.1.1.RELEASE]
        at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:166) [spring-context-4.2.6.RELEASE.jar:4.2.6.RELEASE]
        at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:138) [spring-context-4.2.6.RELEASE.jar:4.2.6.RELEASE]
        at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:121) [spring-context-4.2.6.RELEASE.jar:4.2.6.RELEASE]
        at org.springframework.boot.context.event.EventPublishingRunListener.publishEvent(EventPublishingRunListener.java:111) [spring-boot-1.3.5.RELEASE.jar:1.3.5.RELEASE]
        at org.springframework.boot.context.event.EventPublishingRunListener.environmentPrepared(EventPublishingRunListener.java:65) [spring-boot-1.3.5.RELEASE.jar:1.3.5.RELEASE]
        at org.springframework.boot.SpringApplicationRunListeners.environmentPrepared(SpringApplicationRunListeners.java:54) [spring-boot-1.3.5.RELEASE.jar:1.3.5.RELEASE]
        at org.springframework.boot.SpringApplication.createAndRefreshContext(SpringApplication.java:330) [spring-boot-1.3.5.RELEASE.jar:1.3.5.RELEASE]
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:307) [spring-boot-1.3.5.RELEASE.jar:1.3.5.RELEASE]
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:1191) [spring-boot-1.3.5.RELEASE.jar:1.3.5.RELEASE]
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:1180) [spring-boot-1.3.5.RELEASE.jar:1.3.5.RELEASE]
        at com.yrd.configserver.test.ConfigserverClient.main(ConfigserverClient.java:30) [test-classes/:?]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_101]
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_101]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_101]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_101]
        at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144) [idea_rt.jar:?]
2016-09-22 16:49:06,542 TRACE o.s.b.a.c.OnClassCondition [main] Condition OnClassCondition on org.springframework.cloud.config.client.ConfigServiceBootstrapConfiguration$RetryConfiguration did not match due to required @ConditionalOnClass classes not found: org.springframework.retry.annotation.Retryable,org.aspectj.lang.annotation.Aspect
2016-09-22 16:49:06,543 DEBUG o.s.b.f.s.DefaultListableBeanFactory [main] Returning cached instance of singleton bean 'autoConfigurationReport'

1 个答案:

答案 0 :(得分:0)

我以某种方式解决了这个问题。这是我的测试类和bootstrap.yml。

package com.yrd.configserver.test;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.core.env.ConfigurableEnvironment;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

/**
 * This is a embedded spring boot web application for integration test.
 */
@SpringBootApplication
@RestController
public class ConfigserverClient {

  static {
    System.setProperty("spring.cloud.config.enabled", "true");
  }

  @Autowired
  private ConfigurableEnvironment environment;

  public static void main(final String... args) {
    SpringApplication.run(ConfigserverClient.class, args);
  }


  /**
   * This method is a way to get the specific configuration from the web application.
   * @param propertyName: property name of the configuration.
   * @return
   */
  @RequestMapping("/show")
  public String getPropertyByName(final @RequestParam String propertyName) {
    return environment.getProperty(propertyName);
  }
}

bootstrap.yml

spring:
  cloud:
    config:
      enabled: true
      discovery:
        enabled: false

      profile: env_${ENV:development}

      label: master
      uri: http://user:user_pass@localhost:8888

  application:
    name: configserver-test
  config:
    name: configserver-test  # This config is to stop the client web app to read the application.yml in the path.

security.basic.enabled: false
management.security.enabled: false
server.port: ${app.port:8080}