gpt4 book ai didi

spring-cloud - 使用配置文件禁用 Spring Cloud Server Config?

转载 作者:行者123 更新时间:2023-12-04 18:05:07 24 4
gpt4 key购买 nike

我想实现以下目标:

  • 在“开发”模式下,将 Spring Cloud Config 嵌入当前 webapp
  • 当不在“开发”模式时,连接到已经在运行的 Spring Cloud Config 服务器实例

  • 因此,我当前 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>

    在开发模式下,并且在 bootstrap.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

    当不处于“开发”模式时(例如 spring.profiles.active = prod),当前的 webapp 不会启动:它无法 Autowiring 我的属性(我猜嵌入式服务器是用错误的配置启动的)

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

    我认为我可以使用以下方法实现我想要的,但没有(实际上是否使用 EnableConfigServer 似乎并没有改变任何东西):
    @Configuration
    @Profile("dev")
    @EnableConfigServer
    public static class EmbeddedConfigServer { }

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

    任何帮助表示赞赏。

    附言使用的版本:
    <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/

    它包含 2 个简单的模块:config-server 和 client-app。

    首先,如果您从 client-app 模块启动 Client 类,一切正常(嵌入式模式已打开 => 请参阅 bootstrap.yml 中的开发配置文件)

    然后,启动 config-server(ConfigServer 类)。然后在客户端应用程序中为“prod”(或其他)更改“spring.profiles.active”并重新启动它:属性注入(inject)不再起作用(并且 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}];

    因此它无法连接到 config-server 模块。如果您从 client-app 模块注释 maven 依赖项:spring-cloud-config-server,它会再次起作用。

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

    最佳答案

    根据this class在 spring 云配置服务器中:除非您设置 spring.cloud.config.enabled=true,否则配置服务器会显式禁用配置客户端来自系统属性 ( -D ) 或通过 SpringApplicationBuilder .这是目前使其正常工作的唯一方法。欢迎您提交解释您的用例的增强请求。

    关于spring-cloud - 使用配置文件禁用 Spring Cloud Server Config?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30751255/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com