如何通过自定义启动器配置默认的application.properties?

Mar*_*ijk 5 spring-boot

为了简化内部开发,我正在考虑为 Spring Boot 开发一个薄层/客户启动器。这个自定义启动程序仅依赖于一些启动启动程序和我们需要的其他一些依赖项(外部和内部)。

不管怎样,我想做的下一步是这个自定义启动器包含一个 application.properties 配置,其中包含我们想要在项目中应用的默认设置。我希望自动获取此配置文件,而无需明确引用它。当然,应该可以覆盖实际项目中的属性。

Boot 是否已经提供了一些可以轻松实现的功能?

注意:我已经有了扩展 Boot 的 SpringApplication 的“自定义”应用程序;所以如果我能这样配置就没有问题了。

And*_*son 5

Spring Boot 使用特定顺序查找属性:

  1. 命令行参数
  2. Java 系统属性 ( System.getProperties())
  3. 操作系统环境变量
  4. JNDI 属性来自java:comp/env
  5. ARandomValuePropertySource只具有以下属性random.*
  6. 打包的 jar 之外的应用程序属性(application.properties包括 YAML 和配置文件变体)
  7. 打包在 jar 内的应用程序属性(application.properties包括 YAML 和配置文件变体)
  8. @PropertySource@Configuration类上的注释
  9. 默认属性(使用 指定SpringApplication.setDefaultProperties

为了让使用自定义启动器的项目在如何覆盖默认值方面具有最大的灵活性,您应该使用尽可能接近上述列表末尾的机制。鉴于您已经拥有自己的 子类SpringApplication,我将SpringApplication.setDefaultProperties(Properties)在该子类中使用。