环境spring boot 2.0以上
config server配置如下,能正常注册到eureka集群中心
server:
port: 7001
spring:
jackson:
serialization:
indent-output: true
application:
name: config-server
cloud:
config:
server:
git:
uri: https://github.com/baozhuming/spring-cloud-learning/
search-paths: config/repo
username: ****
password: *****
eureka:
instance:
prefer-ip-address: true
client:
service-url:
defaultZone: http://localhost:8761/eureka/,http://localhost:8762/eureka/,http://localhost:8763/eureka/
访问http://localhost:7001/didispace/dev
是正常的
{
"name" : "didispace",
"profiles" : [ "dev" ],
"label" : null,
"version" : "6e76e502f01d4485ccbe2575f4b8235a216e8519",
"state" : null,
"propertySources" : [ {
"name" : "https://github.com/baozhuming/spring-cloud-learning//config/repo/didispace-dev.properties",
"source" : {
"from" : "git-dev-5.0"
}
}, {
"name" : "https://github.com/baozhuming/spring-cloud-learning//config/repo/didispace.properties",
"source" : {
"from" : "git-default-1.0"
}
} ]
}

config client配置如下application.yml
server:
port: 7002
spring:
application:
name: config-client
cloud:
config:
profile: dev
label: master
discovery:
enabled: true
service-id: config-server
management:
endpoints:
web:
exposure:
include: bus-refresh,bus-env
eureka:
instance:
prefer-ip-address: true
client:
service-url:
defaultZone: http://localhost:8761/eureka/,http://localhost:8762/eureka/,http://localhost:8763/eureka/
依赖如下
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.springcloud</groupId>
<artifactId>config-client</artifactId>
<version>1.0-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.1.RELEASE</version>
<relativePath/>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<!-- 在启动的时候能自动重试连接配置文件 -->
<dependency>
<groupId>org.springframework.retry</groupId>
<artifactId>spring-retry</artifactId>
<version>1.2.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
<!-- 当前项目主要功能是为了手工post请求http://localhost:7002/actuator/refresh时能够实时刷新配置文件 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!-- 结合rabbitMq消息队列,做到自动实时刷新配置信息 -->
<!--<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>-->
<!--<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
<version>1.4.6.RELEASE</version>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Finchley.SR2</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
</project>
主类
package com.cloud.config.client;
import org.springframework.boot.SpringApplication;
//import org.springframework.boot.WebApplicationType;
import org.springframework.boot.autoconfigure.SpringBootApplication;
//import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.context.config.annotation.RefreshScope;
@RefreshScope
@SpringBootApplication
@EnableDiscoveryClient
public class ConfigClientApplication {
public static void main(String[] args) {
// new SpringApplicationBuilder(ConfigClientApplication.class).web(WebApplicationType.SERVLET).run(args);
SpringApplication.run(ConfigClientApplication.class,args);
}
}
控制器
package com.cloud.config.client.controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RefreshScope
@RestController
public class TestController {
@Value("${from}")
private String from;
@RequestMapping("/from")
public String from(){
return this.from;
}
}
访问http://localhost:7002/from

客户端启动正常
访问日志
2019-01-22 09:58:24.634 ERROR 2776 — [nio-7002-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘scopedTarget.testController’: Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder ‘from’ in value “${from}”] with root cause
java.lang.IllegalArgumentException: Could not resolve placeholder ‘from’ in value "from"atorg.springframework.util.PropertyPlaceholderHelper.parseStringValue(PropertyPlaceholderHelper.java:172) [spring−core−5.1.3.RELEASE.jar:5.1.3.RELEASE]atorg.springframework.util.PropertyPlaceholderHelper.replacePlaceholders(PropertyPlaceholderHelper.java:124) [spring−core−5.1.3.RELEASE.jar:5.1.3.RELEASE]atorg.springframework.core.env.AbstractPropertyResolver.doResolvePlaceholders(AbstractPropertyResolver.java:237) [spring−core−5.1.3.RELEASE.jar:5.1.3.RELEASE]atorg.springframework.core.env.AbstractPropertyResolver.resolveRequiredPlaceholders(AbstractPropertyResolver.java:211) [spring−core−5.1.3.RELEASE.jar:5.1.3.RELEASE]atorg.springframework.context.support.PropertySourcesPlaceholderConfigurer.lambdaprocessProperties0(PropertySourcesPlaceholderConfigurer.java:175) [spring−context−5.1.3.RELEASE.jar:5.1.3.RELEASE]atorg.springframework.beans.factory.support.AbstractBeanFactory.resolveEmbeddedValue(AbstractBeanFactory.java:851) [spring−beans−5.1.3.RELEASE.jar:5.1.3.RELEASE]atorg.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1185) [spring−beans−5.1.3.RELEASE.jar:5.1.3.RELEASE]atorg.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1164) [spring−beans−5.1.3.RELEASE.jar:5.1.3.RELEASE]atorg.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessorAutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:593) ~[spring-beans-5.1.3.RELEASE.jar:5.1.3.RELEASE]
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:90) ~[spring-beans-5.1.3.RELEASE.jar:5.1.3.RELEASE]
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:374) ~[spring-beans-5.1.3.RELEASE.jar:5.1.3.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1378) ~[spring-beans-5.1.3.RELEASE.jar:5.1.3.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:575) ~[spring-beans-5.1.3.RELEASE.jar:5.1.3.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:498) ~[spring-beans-5.1.3.RELEASE.jar:5.1.3.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean1(AbstractBeanFactory.java:356) [spring−beans−5.1.3.RELEASE.jar:5.1.3.RELEASE]atorg.springframework.cloud.context.scope.GenericScopeBeanLifecycleWrapper.getBean(GenericScope.java:390) ~[spring-cloud-context-2.0.2.RELEASE.jar:2.0.2.RELEASE]
at org.springframework.cloud.context.scope.GenericScope.get(GenericScope.java:184) ~[spring-cloud-context-2.0.2.RELEASE.jar:2.0.2.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:353) ~[spring-beans-5.1.3.RELEASE.jar:5.1.3.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) ~[spring-beans-5.1.3.RELEASE.jar:5.1.3.RELEASE]
at org.springframework.aop.target.SimpleBeanTargetSource.getTarget(SimpleBeanTargetSource.java:35) ~[spring-aop-5.1.3.RELEASE.jar:5.1.3.RELEASE]
at org.springframework.aop.framework.CglibAopProxyDynamicAdvisedInterceptor.intercept(CglibAopProxy.java:672) [spring−aop−5.1.3.RELEASE.jar:5.1.3.RELEASE]atcom.cloud.config.client.controller.TestControllerEnhancerBySpringCGLIBdef22fd5.from(<generated>) [classes/:na]atsun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethod) [na:1.8.0111]atsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) [na:1.8.0111]atsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [na:1.8.0111]atjava.lang.reflect.Method.invoke(Method.java:498) [na:1.8.0111]atorg.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:189) [spring−web−5.1.3.RELEASE.jar:5.1.3.RELEASE]atorg.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138) [spring−web−5.1.3.RELEASE.jar:5.1.3.RELEASE]atorg.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:102) [spring−webmvc−5.1.3.RELEASE.jar:5.1.3.RELEASE]atorg.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895) [spring−webmvc−5.1.3.RELEASE.jar:5.1.3.RELEASE]atorg.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:800) [spring−webmvc−5.1.3.RELEASE.jar:5.1.3.RELEASE]atorg.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) [spring−webmvc−5.1.3.RELEASE.jar:5.1.3.RELEASE]atorg.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1038) [spring−webmvc−5.1.3.RELEASE.jar:5.1.3.RELEASE]atorg.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:942) [spring−webmvc−5.1.3.RELEASE.jar:5.1.3.RELEASE]atorg.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1005) [spring−webmvc−5.1.3.RELEASE.jar:5.1.3.RELEASE]atorg.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:897) [spring−webmvc−5.1.3.RELEASE.jar:5.1.3.RELEASE]atjavax.servlet.http.HttpServlet.service(HttpServlet.java:634) [tomcat−embed−core−9.0.13.jar:9.0.13]atorg.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:882) [spring−webmvc−5.1.3.RELEASE.jar:5.1.3.RELEASE]atjavax.servlet.http.HttpServlet.service(HttpServlet.java:741) [tomcat−embed−core−9.0.13.jar:9.0.13]atorg.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) [tomcat−embed−core−9.0.13.jar:9.0.13]atorg.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat−embed−core−9.0.13.jar:9.0.13]atorg.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) [tomcat−embed−websocket−9.0.13.jar:9.0.13]atorg.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [tomcat−embed−core−9.0.13.jar:9.0.13]atorg.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat−embed−core−9.0.13.jar:9.0.13]atorg.springframework.boot.actuate.web.trace.servlet.HttpTraceFilter.doFilterInternal(HttpTraceFilter.java:90) [spring−boot−actuator−2.1.1.RELEASE.jar:2.1.1.RELEASE]atorg.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring−web−5.1.3.RELEASE.jar:5.1.3.RELEASE]atorg.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [tomcat−embed−core−9.0.13.jar:9.0.13]atorg.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat−embed−core−9.0.13.jar:9.0.13]atorg.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99) [spring−web−5.1.3.RELEASE.jar:5.1.3.RELEASE]atorg.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring−web−5.1.3.RELEASE.jar:5.1.3.RELEASE]atorg.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [tomcat−embed−core−9.0.13.jar:9.0.13]atorg.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat−embed−core−9.0.13.jar:9.0.13]atorg.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:92) [spring−web−5.1.3.RELEASE.jar:5.1.3.RELEASE]atorg.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring−web−5.1.3.RELEASE.jar:5.1.3.RELEASE]atorg.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [tomcat−embed−core−9.0.13.jar:9.0.13]atorg.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat−embed−core−9.0.13.jar:9.0.13]atorg.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:93) [spring−web−5.1.3.RELEASE.jar:5.1.3.RELEASE]atorg.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring−web−5.1.3.RELEASE.jar:5.1.3.RELEASE]atorg.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [tomcat−embed−core−9.0.13.jar:9.0.13]atorg.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat−embed−core−9.0.13.jar:9.0.13]atorg.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.filterAndRecordMetrics(WebMvcMetricsFilter.java:117) [spring−boot−actuator−2.1.1.RELEASE.jar:2.1.1.RELEASE]atorg.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:106) [spring−boot−actuator−2.1.1.RELEASE.jar:2.1.1.RELEASE]atorg.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring−web−5.1.3.RELEASE.jar:5.1.3.RELEASE]atorg.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [tomcat−embed−core−9.0.13.jar:9.0.13]atorg.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat−embed−core−9.0.13.jar:9.0.13]atorg.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200) [spring−web−5.1.3.RELEASE.jar:5.1.3.RELEASE]atorg.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring−web−5.1.3.RELEASE.jar:5.1.3.RELEASE]atorg.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [tomcat−embed−core−9.0.13.jar:9.0.13]atorg.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat−embed−core−9.0.13.jar:9.0.13]atorg.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199) [tomcat−embed−core−9.0.13.jar:9.0.13]atorg.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)[tomcat−embed−core−9.0.13.jar:9.0.13]atorg.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490)[tomcat−embed−core−9.0.13.jar:9.0.13]atorg.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)[tomcat−embed−core−9.0.13.jar:9.0.13]atorg.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)[tomcat−embed−core−9.0.13.jar:9.0.13]atorg.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)[tomcat−embed−core−9.0.13.jar:9.0.13]atorg.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)[tomcat−embed−core−9.0.13.jar:9.0.13]atorg.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408)[tomcat−embed−core−9.0.13.jar:9.0.13]atorg.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)[tomcat−embed−core−9.0.13.jar:9.0.13]atorg.apache.coyote.AbstractProtocolConnectionHandler.process(AbstractProtocol.java:791) [tomcat-embed-core-9.0.13.jar:9.0.13]
at org.apache.tomcat.util.net.NioEndpointSocketProcessor.doRun(NioEndpoint.java:1417)[tomcat−embed−core−9.0.13.jar:9.0.13]atorg.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)[tomcat−embed−core−9.0.13.jar:9.0.13]atjava.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)[na:1.8.0111]atjava.util.concurrent.ThreadPoolExecutorWorker.run(ThreadPoolExecutor.java:617) [na:1.8.0_111]
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-embed-core-9.0.13.jar:9.0.13]
at java.lang.Thread.run(Thread.java:745) [na:1.8.0_111]
其中服务端的设置的配置文件didispace-dev.properties
from=git-dev-5.0
哪位大神指导指导以下呀,为啥客户端启动的时候访问的是http://localhost:8888这个地址呢