使用spring-boot在库中设置默认属性

时间:2015-03-06 05:38:33

标签: java spring spring-boot

我使用spring-boot有很多不同的服务。我想为每个配置设置一些常见的配置,但允许服务拥有自己的属性并在需要时覆盖它们。示例属性包括spring.show_banner,management url ones等。

我该怎么做?如果我有以下内容:

  • service-common with src / main / resources / application.yml,默认属性为
  • service1 with src / main / resources / application.yml,具有自己的属性

我希望它们与优先使用的service1版本合并。相反,似乎只使用了在类路径中找到的第一个。

(或者,使用@Configuration类会更好,但我不确定它们是否可用于定义许多属性)

2 个答案:

答案 0 :(得分:13)

您可以使用多种选项,所有选项均基于order in which property sources are considered

如果您的公共图书馆负责创建SpringApplication,则可以使用setDefaultProperties。这些值可以被您的服务覆盖' application.properties

或者,您的图书馆可以在其@PropertySource个类之一上使用@Configuration来配置,例如library.properties作为来源。同样,这些属性可以在您的服务中覆盖' application.properties

答案 1 :(得分:1)

我不确定合并它们的意思。

但我假设最后,您正在描述您具有特定于配置文件的配置的情况。因为,可以使用Spring配置文件管理/注入特定于某个服务的任何属性,始终优先于默认属性文件(请参阅documentation)。

例如,您可以拥有文件 application-service1.properties ,当您使用 spring.profiles.active = service1 属性运行应用时,该文件会自动使用,可以在命令行和other位置指定。 如果您未指定此属性,Spring Boot将回退到默认的 application.properties 文件。

您当然可以在两个文件中编写公共属性:

  

application.properties

service.url = http://localhost:8080/endpoint

service.user =管理员

service.password =管理员

  

application-service1.properties

service.url = http://api.service.com/endpoint

service.user =管理员

service.password = aosdnoni3

希望这有帮助。

抱歉格式错误,我仍然不熟悉编辑器。