mis*_*r42 26 java profile spring spring-profiles spring-boot
作为开发人员,我dev
在本地开发环境中使用默认配置文件。这是我的application-dev.properties
文件的一部分:
# Profiles
spring.profiles.include=auth
Run Code Online (Sandbox Code Playgroud)
以前我在运行时使用 Spring Boot 2.3.0.RELEASE 和spring.profiles.include
属性包含auth
配置文件。
但是在我迁移到 Spring Boot 2.4.0 之后,我没有auth
启用配置文件。spring.profiles.include
财产似乎不像以前那样工作。
请告诉我如何配置我的配置文件,以便获得与迁移前相同的结果。(我不想在这里使用配置文件组)
提前致谢!
use*_*710 44
如果您的配置处理以不兼容的方式更改并且您希望使用“传统”处理方式,您可以通过设置重新启用它:
spring.config.use-legacy-processing=true
Run Code Online (Sandbox Code Playgroud)
或者,使用 YAML:
spring.config.use-legacy-processing=true
Run Code Online (Sandbox Code Playgroud)
这应该将配置处理恢复为2.3.x
等效处理。但是请注意,此属性的存在仅是为了简化配置文件配置从2.3.x
到的迁移,2.4.x
并且可能会在未来的主要版本1 中被弃用和删除,因此您仍应尝试尽快迁移。要了解此更改的原因和一些其他信息,请继续阅读。
值得注意的2.4.0
是以下两种范式:
因此,在 Spring Boot 2.4 中,我们计划对属性和 YAML 文件的加载方式进行两项重大更改:
文档将按照定义的顺序加载。
无法再从配置文件特定文档中激活配置文件。
这一变化实际上使什么覆盖什么什么时候逻辑相当容易消化,但导致不得不禁用某些功能。例如:
spring:
config:
use-legacy-processing: true
Run Code Online (Sandbox Code Playgroud)
将导致异常,因为配置尝试从特定于配置文件的文档激活配置文件,这不再被允许。
为了涵盖此用例(和其他用例),已添加配置文件组作为一项功能。这意味着要启用您之前的行为,您需要创建一个配置文件组,如下所示:
spring.profiles.group.<group>=dev, auth
Run Code Online (Sandbox Code Playgroud)
或者,在 YAML 中:
my.prop: test
---
spring.profiles: prodprops
my.prop: prod
---
spring.profiles: prod
# no longer works - activating a profile from a profile-specific document!
spring.profiles.include: prodprops
Run Code Online (Sandbox Code Playgroud)
<group>
您选择的配置文件组的名称在哪里。请注意,您可以定义多个组,所有组都应具有不同的名称。如果您随后使用<group>
配置文件启动应用程序,则应激活属于该组的所有配置文件。
作为旁注,Spring Boot2.4.0
还增加了对多文档属性文件的支持,如下所示:
spring.profiles.group.<group>=dev, auth
Run Code Online (Sandbox Code Playgroud)
请注意文档分隔符 ( #---
)。这允许您在.properties
文件中具有与文件中类似的覆盖逻辑.yml
。
同样,相关更新帖子中提供了此信息和其他信息。
1如果先前的弃用是任何指标,则应2.5.0
最早或2.6.0
最迟删除该属性,后者更有可能(从 开始弃用2.5.x
)。
您可以使用spring.config.import
使用classpath:
spring.config.import=classpath:application-DEV.yml,classpath:application-auth.yml
Run Code Online (Sandbox Code Playgroud)
小智 8
尽管我们上面已经接受了答案。但我会通过多个文件分享我的解决方案。我的项目中有多个配置文件
./
application.yml
application-auth.yml
application-mockauth.yml
application-datasource.yml
Run Code Online (Sandbox Code Playgroud)
application-auth.yml 或 application-datasource.yml 的主体与我们在 Spring Boot 2.4 之前实现的相同。小调整将位于 application.yml 内
spring:
profiles:
group:
"dev": "datasource,mockauth"
"prod": "datasource,auth"
Run Code Online (Sandbox Code Playgroud)
您将使用环境名称(dev、prod...)对相关配置进行分组,而不是 spring.profiles.include。
归档时间: |
|
查看次数: |
21538 次 |
最近记录: |