当前位置: 首页 > 知识库问答 >
问题:

是否使用配置文件禁用Spring云服务器配置?

索嘉胜
2023-03-14

我想实现以下目标:

  • 在“开发”模式下,在当前webapp中执行Spring云配置

因此,当前webapp的类路径包含对配置服务器和客户端的依赖关系:

<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-config-server</artifactId>
</dependency> 

在开发模式下,并在引导程序中具有以下属性。yml,没问题(嵌入式配置服务器已配置并启动)

spring:
  application:
    name: app1
  profiles:
    active: dev
  cloud:
    config:
      uri: ${SPRING_CONFIG_URI:http://localhost:8888}

---

spring:
  profiles: dev
  cloud:
    config:
      server:
        bootstrap: true
        git:
          uri: https://github.com/nocquidant/my-config-repo.git
          basedir: target/config

当不在'dev'模式(例如spring.profiles.active=prod)时,当前的webapp不会启动:它无法自动装配我的属性(我猜嵌入式服务器是以错误的配置启动的)

如果我在POM中对spring cloud config server依赖项进行注释,那么它就可以工作了。

我认为我可以通过以下方式实现我想要的目标,但没有(实际上使用EnableConfigServer与否似乎并没有改变任何事情):

@Configuration
@Profile("dev")
@EnableConfigServer
html" target="_blank">public static class EmbeddedConfigServer { }

我该怎么做(不使用maven profile)?有没有一种简单的方法来禁用spring云配置服务器?有没有更好的方法来实现我的目标?

感谢您的帮助。

P、 使用的美国版本:

<parent>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-parent</artifactId>
  <version>1.0.3.BUILD-SNAPSHOT</version>
</parent>

//尼克

//---编辑#1

请查看github上的一个简单项目:https://github.com/nocquidant/exchange/tree/master/poc-spring-cloud/

它包含两个简单的模块:配置服务器和客户端应用程序。

首先,如果您从client-app模块启动Client类,一切正常(嵌入式模式开启=

然后,启动config server(ConfigServer类)。然后更换“Spring”。配置文件。客户端应用程序中的“prod”(或其他)处于活动状态,并重新启动它:属性注入不再工作(webapp拒绝启动)。

Caused by: org.springframework.validation.BindException: org.springframework.validation.BeanPropertyBindingResult: 1 errors
Field error in object 'server' on field 'port': rejected value [${taap.bak.config.port}];

因此,它无法连接到配置服务器模块。如果您在客户端应用程序模块中注释maven dependencies:spring cloud config server,它会再次工作。

希望现在更清楚了。谢谢,

共有1个答案

仲智
2023-03-14

根据Spring cloud config server中的此类:配置服务器显式禁用配置客户端,除非您从System Property(-D)或通过SpringApplication ationBuilder设置spring.cloud.config.enabled=true。这是当前使其工作的唯一方法。欢迎您提交增强请求,解释您的用例。

 类似资料:
  • 我正在使用Spring Cloud Config服务器,能够检测来自git存储库的更改并将其传递给配置客户机。 有两种方法,我已经实现了: null 所以两者都工作得很好,那么使用Spring Cloud Bus有什么好处吗?或者在生产环境中,不使用Spring Cloud Bus会有什么问题吗?因为将需要额外的工作来设置RabbitMQ集群(HA)作为生产中的Spring云总线。 谢谢,大卫

  • 我试图在应用程序启动时从配置服务器读取log4j2配置。 bootstrap.yml 应用程序似乎在启动期间得到了正确的配置,因为我看到了适当的日志级别。然而,自动配置似乎不起作用。当我更改日志记录器的日志级别时,它似乎没有在monitorInterval通过后从配置服务器读取更新的配置。我已将monitorInterval设置为10秒。根据文件,最小间隔应为5秒。如果我指向本地驱动器上的文件,而

  • 我正在尝试创建SpringCloudConfigServer,以便使用SSHURI连接到git存储库(bitbucket)。我正在关注Spring云配置 我使用ssh-keygen实用工具生成了密钥对,并粘贴了。发布文件内容在我的bitbucket帐户的ssh部分,但当我运行作为spring启动应用程序的服务器时,我得到无效的privateKey异常。 我也使用了这个堆栈溢出帖子中提供的建议,但是

  • 我正在使用Spring Cloud配置服务器,我需要为每个阶段的产品测试和开发创建一个配置文件,我已经为默认配置文件创建了4个yml文件application.yml,为每个配置文件创建了应用程序-{配置文件},所以我的问题是如何通过环境变量加载特定的配置,并在每个配置文件配置和端口上运行配置服务器,我已经创建了一个bootstrap.yml但我不能解决这个问题。如果有人能指导我完成这些步骤来满足

  • 我在我的Spring应用程序中集成了Spring Cloud。它工作正常。但是我有3个属性文件:application.properties application-dev.properties 和applictaion-int.properties 为了使用application-dev.properties的本地内容并仅为applictaion-int.properties激活,我可以禁用sp

  • 我的Spring云配置服务器在尝试使用http://localhost:8080/application/default访问属性文件内容时抛出以下错误 我的申请。配置服务器中的属性如下所示 <代码>Spring。云配置。服务器吉特。uri=/Users/joe/MyProgs/Java/spring ws/config,我甚至尝试了这个spring。云配置。服务器吉特。uri=${HOME}/My