如何在客户端服务中动态加载SPRING_PROFILES_ACTIVE值?

时间:2020-03-06 14:06:53

标签: java spring-boot spring-cloud-config

我是Spring的新手,正在创建Spring Cloud配置服务。我已经成功创建了配置服务,其中所有配置都在那里。在我的客户端服务中(这将从配置服务中获取所有必要的配置),我需要根据清单文件中定义的SPRING_PROFILES_ACTIVE值来获取配置。客户端服务中有多个清单文件,每个清单文件都有自己的SPRING_PROFILES_ACTIVE值。 目前,我正在使用@ConfigurationProperties(prefix="profile_name"),即手动定义“ profile_name”。但是,我想动态地制作它,即取决于SPRING_PROFILES_ACTIVE的值,该值应该从配置服务中获取。 谁能建议我如何动态加载值。

谢谢。

2 个答案:

答案 0 :(得分:2)

SPRING_PROFILES_ACTIVE作为环境变量传递给Spring Boot应用程序,而不是在yaml中声明它并在配置文件中对其进行硬编码。该应用会根据个人资料选择相应的Yaml。

How to pass spring profile as parameter to spring boot app

答案 1 :(得分:0)

取决于SPRING_PROFILES_ACTIVE的值,应从配置服务中获取该值。

如果我理解正确,则您正在尝试根据客户端应用程序中的活动配置文件从Config Server获取配置。 Spring Cloud Config Client as described in the documentation自动执行此操作。例如,如果客户端应用具有spring.profiles.active=profile1,profile2,则在增强配置时,配置客户端将使用

之类的URL向配置服务器发出请求。
https://my-config-server.example.com/sample-app/profile1/master
https://my-config-server.example.com/sample-app/profile2/master

,并将每个请求的响应加载到客户端应用程序的属性源中。

相关问题