spring boot:来自启动器的链应用程序属性?

时间:2017-01-31 21:02:20

标签: spring spring-boot

我正在开发一个弹簧启动应用程序和启动器。我希望启动器能够保存公共属性和代码。

在我的首发中,我有一个application-dev.properties文件。我在启动器中定义了一个@Profile(" dev")。

当我使用dev配置文件启动我的应用程序时,我会看到启动器中的属性,这很棒。当我将application-dev.properties文件添加到我的应用程序时,什么不是很好,根本不再阅读启动器中的文件。这意味着我无法弄清楚如何将普通的" dev"那里的个人资料属性。

基于external configuration文档,我认为这样可行,因为将读取启动文件,然后读取应用程序文件。

  

Spring Boot使用一个非常特殊的PropertySource命令,旨在允许合理地覆盖值。按以下顺序考虑属性:

     

SNIP

     

打包jar之外的特定于配置文件的应用程序属性(application- {profile} .properties和YAML变体)

     

打包在jar中的特定于配置文件的应用程序属性(application- {profile} .properties和YAML变体)

有什么建议吗?

2 个答案:

答案 0 :(得分:2)

将application-dev.properties放入启动器的src / main / resources / config文件夹中,并将应用程序的application-dev.properties放入src / main / resources中,这有助于解决此问题。

答案 1 :(得分:0)

我认为将application-dev.properties添加到初学者并不是一个好主意。问题是您只能添加一次文件。好吧,您可以将文件放入文件夹config。这意味着您最多可以添加两次文件。不再。如果您决定使用第二个启动器怎么办?你把application-dev.properties放在哪里?

我认为application*.properties应仅添加到最终用户产品中。对于便携式模块,我建议使用

  
      
  1. @Configuration类上的@PropertySource注释。
  2.   
@Configuration
@PropertySource("classpath:/my/starter/dev.properties")
@Profile("dev")
public class MyConf {}