Java 如何在运行时切换Spring配置文件?
目前,我通过@Value将其注入到我的应用程序属性中,效果很好。现在我希望我的应用程序支持多个配置,这意味着它的@Value每次都应该返回不同的值 我读过关于spring概要文件的文章,但我不明白如何在运行时切换概要文件。有可能吗Java 如何在运行时切换Spring配置文件?,java,spring,spring-boot,Java,Spring,Spring Boot,目前,我通过@Value将其注入到我的应用程序属性中,效果很好。现在我希望我的应用程序支持多个配置,这意味着它的@Value每次都应该返回不同的值 我读过关于spring概要文件的文章,但我不明白如何在运行时切换概要文件。有可能吗 我真正需要的是在服务器启动时加载所有配置,并在请求到达时动态选择其配置文件-每个请求应该有一组配置 在运行时切换Spring配置文件不是一个好的做法。Spring profile旨在作为跨不同环境管理应用程序的一种方式 Spring概要文件提供了一种隔离应用程序配置部
我真正需要的是在服务器启动时加载所有配置,并在请求到达时动态选择其配置文件-每个请求应该有一组配置 在运行时切换Spring配置文件不是一个好的做法。Spring profile旨在作为跨不同环境管理应用程序的一种方式 Spring概要文件提供了一种隔离应用程序配置部分的方法,并使其仅在某些环境中可用
如果你有一个变量需要动态地改变每一个传入的请求,请考虑以下几个选项:
- 将值存储在DB中,启动时缓存,并根据传入的请求参数/正文获取
- 从传入请求参数/正文推断值
- 将所有可能的值存储在属性文件中,在开始时加载,并根据传入的请求参数/正文进行选择
- 将所有可能的值存储为enum/constants,并在传入请求参数/body上选择bsaed
application.properties
,application-{profile}.properties
。例如:application-dev.properties
并且您需要通过spring.profiles.active=dev
在dev上启动服务时,它将自动加载application.properties
并覆盖application-dev.properties
文件中存在的参数如果这不是您想要的,请提供更多信息?我认为OP想要的是在应用程序启动后切换配置文件,因为OP想要在请求到达时动态切换配置文件(这只能在应用程序启动后发生)。因此,您的建议不会起作用。概要文件不应该这样使用,它通常在项目开始根据当前选择的概要文件选择一个Bean而不是另一个Bean时使用。或从特定应用程序加载参数-xxxx.properties。但是热配置文件切换不是可以完成的。如果我想使用与-Dspring.profiles.active不同的名称通过命令行参数传递配置文件,该怎么办?