春云配置匹配配置文件



我的git存储库中应用程序文件的层次结构如下:

uri: https://bitbucket.org/repositorios-company/configuration-files

目录:

-authorization-service
----application.yml
----application-development.yml
----application-uat.yml
----application-production.yml
-cpo-executor
----application.yml
----application-development.yml
----application-uat.yml
----application-production.yml

在配置项目yml文件中:

server:
    port: 8888
spring:
    application:
        name: config-server
    cloud:
        config:
            server:
                git:
                    username: ###### 
                    ....
                    uri: https://bitbucket.org/repositorios-company/cup-configuration-files
                    searchPaths: '{application}'

问题:

  1. 当我尝试通过url http://localhost:8888/authorization-service/development访问开发文件时,spring加载两个文件,而不仅仅是一个,如我所料:
2021-01-13 10:34:40.549  INFO 141562 --- [nio-8888-exec-1] o.s.c.c.s.e.NativeEnvironmentRepository  : Adding property source: file:/tmp/config-repo-3531515016986363333/authorization-service/application.yml
2021-01-13 10:34:48.950  INFO 141562 --- [nio-8888-exec-2] o.s.c.c.s.e.NativeEnvironmentRepository  : Adding property source: file:/tmp/config-repo-3531515016986363333/authorization-service/application-development.yml
  1. 当使用以下配置的客户端应用程序试图访问相应的配置文件时,spring只会将该应用程序打开。yml文件,而不是配置文件对应的文件:

客户端yml:

spring.application.name=authorization-service
spring.profiles.active=development
spring.cloud.config.uri=http://localhost:8888

应用程序启动后,spring cloud配置日志显示默认的application.yml:

2021-01-13 11:09:11.346  INFO 144899 --- [nio-8888-exec-2] o.s.c.c.s.e.NativeEnvironmentRepository  : Adding property source: file:/tmp/config-repo-1131390371944673193/authorization-service/application.yml

编辑:我检查了值是否在运行时发生了变化,如果它从应用程序开发中获取了值。

有人知道我怎么能只带一个配置文件到这两种情况吗?

当你直接访问你的配置服务器时,它会显示这两个文件,这是正常的,基本配置文件和第二个覆盖基本配置文件,这是正常的行为。

当你的客户端连接到你的配置服务器时,它将只获取一个文件,它将在你的配置服务器中分配两个属性文件配置的混合。

下面的文章描述了bootstrap的用法。该文件允许在从配置服务器获取数据时激活配置文件。

在应用程序中添加属性有什么区别?或bootstrap。春靴里的Yml ?

需要考虑的三件事:

  1. 即使我使用profile为"spring.profiles.active=development"Spring寻找应用程序开发。属性而不是应用程序开发。属性文件。我使用Spring执行器来查看Spring正在寻找的配置文件。

如何使用弹簧执行器

http://localhost:8080/actuator/env
{"activeProfiles":["dev"],....}
  1. 即使在Spring Cloud配置中加载了两个文件,也只有对应的配置文件被应用程序客户端使用:
INFO 373818 ...NativeEnvironmentRepository  : Adding property source: file:/tmp/config-repo/authorization-service/application-dev.properties
INFO 373818 ...NativeEnvironmentRepository  : Adding property source: file:/tmp/config-repo/authorization-service/application.properties

但是,如果您只需要一个应用程序使用与它的配置文件相对应的文件,那么在访问http://localhost:8888/authorization-service/dev时,只需删除默认应用程序。

  1. 使用Spring Cloud Config时使用bootstrap。{yml|properties}而不是application。{yml|properties}在您的应用程序客户端。

在应用程序中添加属性有什么区别?或bootstrap。春靴里的Yml ?

您必须告诉spring您需要使用的具体文件yml:

例如:

在主类中必须添加:

@PropertySource("classpath:foo.yml")

这个注释说在运行主类时使用foo.yml

了解更多详情,请访问:https://www.baeldung.com/properties-with-spring?

我希望这个解决方案对你有帮助。

相关内容

  • 没有找到相关文章

最新更新