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

8
我刚开始使用Spring并创建了一个Spring Cloud Config服务。我已经成功创建了配置服务,其中包含所有的配置。在我的客户端服务中(它将从配置服务获取所有必要的配置),我需要根据清单文件中定义的SPRING_PROFILES_ACTIVE值来获取配置。客户端服务中有多个清单文件,每个清单文件都有自己的SPRING_PROFILES_ACTIVE值。 目前,我正在使用@ConfigurationProperties(prefix="profile_name"),即手动定义"profile_name"。但是,我想使它动态化,即根据SPRING_PROFILES_ACTIVE的值从配置服务中获取该值。 请问有人能提供如何动态加载值的建议吗? 提前感谢您。

你可以使用-Dspring.profiles.active={your-profile}作为应用程序启动参数,而不是在配置文件中指定。 - Milan Desai
https://dev59.com/XFwZ5IYBdhLWcg3wGs7D - Vaibs
我可以使用它,但我想从配置文件中选择它。 - Vicky
2个回答

9

0
根据 SPRING_PROFILES_ACTIVE 的值,应从配置服务中获取该值。
如果我理解正确,您正在尝试根据客户端应用程序中的活动配置文件从 Config Server 获取配置。Spring Cloud Config Client 会自动执行此操作,如文档中所述。例如,如果客户端应用程序具有 spring.profiles.active=profile1,profile2,则在引导配置客户端时,将使用类似以下 URL 的请求向 Config Server 发送请求:
https://my-config-server.example.com/sample-app/profile1/master
https://my-config-server.example.com/sample-app/profile2/master

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


使用这个,我能够加载我的配置文件。但是,目前在我的客户端服务中遇到了读取它的问题。正在努力解决。你能否提供一些建议? - Vicky
应用程序通常不直接从配置服务器加载和读取配置文件。配置客户端会自动将它们加载到Spring环境中,在那里可以像本地配置一样读取配置值(例如,如https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-features-external-config中所述)。你需要直接加载文件的原因是什么? - Scott Frederick
我想从文件中获取配置。 - Vicky

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接