让我先说一下,我没有直接使用 Spring Cloud Config,它是通过 Spring Cloud Hystrix 启动器传递的。
仅使用@EnableHystrix
时,Spring Cloud还会尝试查找配置服务器,由于我没有使用配置服务器,因此预计不会成功。 据我所知,该应用程序运行良好,但问题出在状态检查中。 运行状况显示DOWN
,因为没有配置服务器。
浏览项目的源代码,我希望spring.cloud.config.enabled=false
禁用此功能链,但这不是我所看到的。
升级到1.0.0.RC1
(添加此属性(并使用@EnableCircuitBreaker
后:
{
status: "DOWN",
discovery: {
status: "DOWN",
discoveryClient: {
status: "DOWN",
error: "org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.springframework.cloud.client.discovery.DiscoveryClient] is defined"
}
},
diskSpace: {
status: "UP",
free: 358479622144,
threshold: 10485760
},
hystrix: {
status: "UP"
},
configServer: {
status: "DOWN",
error: "org.springframework.web.client.ResourceAccessException: I/O error on GET request for "http: //localhost: 8888/bootstrap/default/master":Connection refused: connect; nested exception is java.net.ConnectException: Connection refused: connect"
}
}
检查 configprops 端点后,似乎我的属性被覆盖了。 请注意,父级已启用配置客户端。
parent: {
configClientProperties: {
prefix: "spring.cloud.config",
properties: {
password: null,
discovery: {
enabled: false,
serviceId: "CONFIGSERVER"
},
name: "bootstrap",
label: "master",
env: "default",
uri: "http://localhost:8888",
enabled: true,
failFast: false,
username: null
}
}
},
configClientProperties: {
prefix: "spring.cloud.config",
properties: {
password: null,
discovery: {
enabled: false,
serviceId: "CONFIGSERVER"
},
name: "bootstrap",
label: "master",
env: "default",
uri: "http://localhost:8888",
enabled: false,
failFast: false,
username: null
}
}
任何方向都将不胜感激,如果看起来我没有正确做到这一点。
引导期间需要配置服务器,这就是父属性源的来源。看起来您需要做的就是将spring.cloud.config.enabled
属性移动到bootstrap.yml(或.properties(。
- 您可以将引导属性或 yml 放入您的资源目录或您的应用程序目录并添加
spring.cloud.config.enabled=false
.或 - 您可以通过添加环境变量来禁用 Spring 云配置服务器客户端:
SPRING_CLOUD_CONFIG_ENABLED=false
OR
配置 - 服务器客户端可以通过向应用程序添加参数来禁用,如果您将参数传递给 SpringApplication.run:
public static void main(String[] args) throws Exception {
SpringApplication.run(YourApplication.class, args);
}
并通过以下方式启动应用程序:
java -jar yourapplication.jar --spring.cloud.config.enabled=false
我遇到了同样的问题,我想禁用配置服务器(因为我们到目前为止不需要它(,但上面提到的属性至少对于 RC1 不正确。
spring.cloud.enabled
应该是:
spring.cloud.config.enabled
我尝试了上述所有更改,但配置客户端从未以某种方式停止。
我能够通过在项目的pom.xml文件中使用以下排除来禁用它的唯一方法。
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-client</artifactId>
</exclusion>
</exclusions>
</dependency>
关于发现服务的跟进(看起来没有其他帖子(,设置spring.cloud.config.discovery.enabled: false
对我有用,但前提是它是在 bootstrap(yml/properties( 中设置的,并且如果我从我的Application
类中删除了@EnableDiscoveryClient
注释。 我想这意味着不能将该注释用于有时不使用发现的任何服务。
这些都没有帮助我,我需要从服务器禁用 Spring 云客户端引导程序以进行集成测试,因此遇到相同问题的人都可以使用对我有帮助的内容:
@ComponentScan(excludeFilters = {
@ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, value = PropertySourceBootstrapConfiguration.class),
})
public class TestApplication {
}
然后使用以下方法注释您的测试:
@SpringBootTest(classes = TestApplication.class)
class SomeIntegrationTest {}