无法通过 spring.cloud.config.enabled:false 禁用 Spring Cloud Config
Posted
技术标签:
【中文标题】无法通过 spring.cloud.config.enabled:false 禁用 Spring Cloud Config【英文标题】:Cannot disable Spring Cloud Config via spring.cloud.config.enabled:false 【发布时间】:2015-02-18 13:46:05 【问题描述】:让我先说我没有直接使用 Spring Cloud Config,它是通过 Spring Cloud Hystrix starter 传递的。
当仅使用@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 端点后,似乎我的属性被覆盖了。请注意,父级已启用 configClient。
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? 我使用的是 1.0.0.M3 的 spring-cloud-starter-parent,它引入了相同版本的 spring-cloud-starter-hystrix。我也用这些信息更新了我的问题,谢谢。 试试 RC1(刚刚发布)。我认为该标志是最近添加(或扩展)的。 谢谢,@DaveSyer - 我会试一试并报告。 @DaveSyer - 我已将我的发现添加到原始帖子而不是 cmets。我不确定这种变化对我来说是好是坏。我还注意到一些可能会覆盖我的配置的父属性。 【参考方案1】:这些都没有帮助我,我需要从服务器禁用 Spring Cloud 客户端引导以进行集成测试,所以遇到同样问题的人可以使用对我有帮助的东西:
@ComponentScan(excludeFilters =
@ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, value = PropertySourceBootstrapConfiguration.class),
)
public class TestApplication
然后用以下方式注释您的测试:
@SpringBootTest(classes = TestApplication.class)
class SomeIntegrationTest
【讨论】:
【参考方案2】:在引导期间需要配置服务器,这就是父属性源的来源。看起来您需要做的就是将您的 spring.cloud.config.enabled
属性移动到 bootstrap.yml(或 .properties)。
【讨论】:
DiscoveryClient
中似乎还有一些剩余的云配置溢出。 ConfigServer
似乎已解决,但 DiscoveryClient
仍显示为 DOWN
,尽管还添加了 spring.cloud.config.discovery.enabled: false
到 bootstrap.properties
这是默认设置。并且发现没有连接到配置,所以我会说这是另一个问题(我们还没有对不同的依赖项组合进行太多测试)。在这里开始新帖子或在 github 中提出问题?
我会这样做的。我会将此标记为已回答,因为它回答了原始问题。
添加spring.cloud.config.enabled=false
(而不是spring.config.enabled
)到bootstrap.properties
有助于消除Fetching config from server at : http://localhost:8888
谢谢
属性现在不是去掉了吗? github.com/spring-projects/spring-boot/wiki/…【参考方案3】:
您可以将引导属性或 yml 放入资源目录
或您的应用程序目录并添加
spring.cloud.config.enabled=false
。或
您可以通过添加环境变量来禁用 spring cloud config server 客户端: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
【讨论】:
【参考方案4】:我尝试了上述所有更改,但配置客户端仍然没有停止。
我能够通过在项目的 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>
【讨论】:
正是这个位置。现有的解决方案都不起作用,但这种排除方法并不是最好的选择。【参考方案5】:关于发现服务跟进(看起来没有其他帖子),设置 spring.cloud.config.discovery.enabled: false
对我有用,但前提是它是在 bootstrap(yml/properties) 中设置并且我从我的Application
班级。我想这意味着不能将该注释用于有时不会使用发现的任何服务。
【讨论】:
【参考方案6】:我遇到了同样的问题,我想禁用配置服务器(因为我们目前还不需要它)但上面提到的属性至少对于 RC1 是不正确的。
spring.cloud.enabled
应该是:
spring.cloud.config.enabled
【讨论】:
以上是关于无法通过 spring.cloud.config.enabled:false 禁用 Spring Cloud Config的主要内容,如果未能解决你的问题,请参考以下文章
Spring Cloud Config Server - MultipleJGitEnvironmentRepository:无法为主远程获取远程
Docker 容器中的 Spring Cloud Config 无法访问
Spring Cloud Config Server 无法与 Docker 组合一起使用
通过总线机制实现自动刷新客户端配置(Consul,Spring Cloud Config,Spring Cloud Bus)