当前位置: 首页 > 面试题库 >

在Spring-Boot的生产过程中如何覆盖application.properties?

訾俊名
2023-03-14
问题内容

我正在使用Spring Boot,并application.properties在开发过程中选择了一个数据库@Configuration @Profile("dev")

spring.profiles.active=dev
spring.config.location=file:d:/application.properties

在生产期间,我想在应用程序上下文之外创建一个文件,该文件应该被加载,然后使用d:/application.properties激活不同的配置文件:

spring.profiles.active=production

结果:启动应用程序时,配置仍为dev,因此不考虑生产属性文件的其他位置。我有什么想念的吗?

弹簧靴1.1.0.BUILD-SNAPSHOT

注意:这个问题 不是 关于 tomcat的


问题答案:

我知道您问过如何做,但是答案是您不应该这样做。

取而代之的是,有一个application.propertiesapplication-default.properties
application- dev.properties等,并且经由ARGS切换配置文件到JVM:例如-Dspring.profiles.active=dev

您还可以在测试时使用以下方法覆盖某些内容 @TestPropertySource

理想情况下,所有内容都应在源代码控制中,这样就不会让人感到意外,例如,您如何知道服务器位置的属性以及丢失的属性?如果开发人员介绍新事物,会发生什么?

Spring Boot已经为您提供了足够的方法来完成此操作。

https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-
external-config.html



 类似资料:
  • 我使用spring boot和在开发过程中通过选择数据库。 在生产过程中,我希望在应用程序上下文之外创建一个应该加载的文件,然后使用d:/application.properties激活一个不同的配置文件: 结果:当我启动应用程序时,配置仍然是,因此不知道怎么地没有考虑生产性属性文件的附加位置。我错过什么了吗? spring boot 1.1.0.build-快照 注意:这个问题不是关于Tomca

  • 我正在尝试重写方法。但我还是发现了错误: 马塞尔

  • 问题内容: 我有从外部配置Web服务中获取的jdbc属性文件。在spring启动中,为了设置mysql属性,将这些属性添加到application.properties很容易: 如何在我的应用中以编程方式覆盖这些内容? Spring-batch道具也是如此: 问题答案: 你可以在对ApplicationEnvironmentPrepared事件作出反应的生命周期侦听器中添加其他属性源。 类似于以下

  • 我想重写java中的getProperty()方法。util。物业类别,请告知。 1.Spring上下文文件 2.Java类 3.配置文件 仅供参考:我正在从配置文件中提取批次值,并希望在从中获取值后调用trim()。属性,以避免代码冗余,尝试重写getProperty()方法。 使用:Spring 4.0

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

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