spring-boot - 如何通过例如配置默认 application.properties定制启动器?

标签 spring-boot

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

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

Boot 是否已经为此轻松提供了一些东西?

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

最佳答案

Spring Boot 使用 specific order 查找属性:

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

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

关于spring-boot - 如何通过例如配置默认 application.properties定制启动器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26129548/

相关文章:

spring - 在服务中使用多个服务或多个存储库?

spring-boot - 查询第二页10000 elasticsearchresttemplate

java - 如何使用 Thymeleaf 写入响应 header

java - 带有 mysql 的 Spring Boot 应用程序获取 "java.sql.SQLNonTransientConnectionException"

java - 在 Spring Boot Java 中测试采用 Model 参数的函数

java - 在 Spring RestController 中显式将 POJO 转换为 JSON 的最佳方法

java - 列 'column' 不能为空

java - Spring Boot Autowiring 时的空指针

spring-boot - 仅在一个服务器实例上激活 Batch

java - Spring Boot日志文件相对于jar目录而不是启动目录