当前位置: 首页 > 知识库问答 >
问题:

Spring"spring.profiles.include"覆盖

邹华池
2023-03-14

我的意图是在spring boot应用程序中有两个概要文件—开发和生产概要文件。开发概要文件只是为了覆盖生产概要文件的一些变量(比如内存中的数据库,而不是云中的数据库)。由于我预计将来会对生产概要进行一些更改,所以在开发概要中复制变量似乎不是一个解决方案。

因此,在Spring参考中,我读到spring.profiles.include应该只从引用的配置文件中添加属性。

有时,将特定于概要文件的属性添加到活动概要文件中而不是替换它们是很有用的。Spring。配置文件。include属性可用于无条件添加活动配置文件。

然而,从我检查的情况来看,它相当于覆盖了它。因此,当有两个配置文件foo和bar时,在单独的yaml文件中:

application-foo.yaml:

myproperty: 44

application-bar.yaml:

spring:
  profiles:
    include: foo
    active: bar,foo
myproperty: 55

和设置Dspring。配置文件。active=IDE中的bar变量,myproperty的运行时值为44。这意味着,条形图将被“foo”覆盖,它应该只添加属性,而不是覆盖属性。启动应用程序时,我得到:

以下配置文件处于活动状态:foo、bar

我添加了spring.profiles.active=barapplication-bar.yaml正如这个答案所建议的,在另一个问题中,但它没有效果-当属性在或不在时没有区别(我也尝试使用破折号列表而不是逗号分隔值)。

我的问题是,它应该如何工作(那么Spring参考是误导性的)?如果是,有什么解决方案吗?

github上添加指向应用程序源代码的链接。

共有3个答案

林富
2023-03-14
匿名用户

您可以在应用程序栏中添加新的配置文件。yaml:

spring.profiles.include: foo,foo-override
myproperty: 33

---
spring.profiles: foo-override
myproperty: 55

顺序为:条形图中的33被foo中的44覆盖被foo中的55覆盖。

鲁浩渺
2023-03-14

根据这里的Spring Boot文档,spring。配置文件。include(包括)用于添加其他配置文件的属性。如果属性不在活动配置文件中,它将从其他配置文件中添加该属性。但如果存在,则会覆盖,最后应用的一个将获胜

有时,将特定于概要文件的属性添加到活动概要文件中而不是替换它们是很有用的。Spring。配置文件。include属性可用于无条件添加活动配置文件。

蒋乐意
2023-03-14

我们以稍微不同的方式实现了Spring活动配置文件。假设默认属性文件application.yml包含在生产和开发环境中相同的所有默认值。

为名为application prd的生产和开发文件创建单独的属性。分别为yml和application-dev.yml。这些文件可能包含额外的属性或替代某些默认属性。

在应用程序启动期间,我们传递spring。配置文件。作为环境变量激活。例如

spring.profiles.activePRD

将拾取应用程序prd。yml以及应用程序。yml

spring.profiles.active代码

将与应用程序一起拾取application-dev.yml。yml

 类似资料:
  • 配置类-根据活动配置文件创建bean: 这个很管用。但是,当我删除application.yml并通过Spring Cloud Config-with Git repository使用外部配置时,这就不起作用了。活动配置文件仅为prod,不包括“enable_tls”和“enable_mongo_ssl”,因此在bean创建时,语句: 不再是真的了。 我当前的解决方案是将所有属性都外部化在配置服务

  • 致力于从Spring Security xml配置移动到Spring Security中的Java配置。 在我的类SecurityConfiguration中,它扩展了WebSecurity配置适配器。然而,问题是安全过滤器(特别是UsernamePasswordAuthenticationFilter)没有使用userDetailsService。我查看了启动,似乎这不是在Spring boot

  • 对于Spring Boot2.1,默认情况下禁用bean重写,这是一件好事。 然而,我确实有一些测试,其中我使用mockito用模拟实例替换bean。在默认设置下,使用这种配置的测试将由于bean重写而失败。 我发现唯一有效的方法是通过应用程序属性启用bean重写: 但是,我真的希望确保测试配置的bean定义设置最小,这一点将由spring在禁用重写的情况下指出。 我正在重写的bean是 在导入到

  • 我如何覆盖Spring引导的favicon? 否则,WebMvcAutoConfiguration注册faviconRequestHandler bean(请参见源https://github.com/spring-projects/spring-boot/blob/master/spring-boot-autocigure/src/main/java/org/springframework/bo

  • 问题内容: 我正在使用Oracle的OEPE发行版(包括Weblogic服务器10.3.5)开发Web应用程序。WLS包含自己的Spring版本,该版本似乎是2.5.6.SEC01。但是,我们正在尝试使用3.1发行版的Spring和Spring Security功能。 Maven POM将Spring Version定义为属性3.1.1.RELEASE(该属性已插入各节中,即: 我在weblogi

  • 我正在使用Oracle的OEPE发行版开发一个Web应用程序,包括Weblogic服务器10.3.5。WLS包括它自己的Spring版本,似乎是2.5.6。SEC01。但是,我们正在尝试使用特定于3.1版本的Spring和Spring Security功能。 Maven POM将Spring版本定义为3.1.1.RELEASE属性(该属性插入到部分中,即: 我已经尝试了两种不同的方法来weblog