【问题标题】:Property order in Spring BootSpring Boot 中的属性顺序
【发布时间】:2014-07-25 03:25:33
【问题描述】:

我想编写自己的 Spring Boot 启动器并让它从另一个启动器继承(比如说 spring-boot-starter-batch)。现在我想将 spring-boot-starter-batch 属性之一设置为与 spring-boot-starter-batch 的默认值不同的默认值(例如 spring.batch.job.enabled=false 而不是 true)。我的启动器的用户仍然可以通过application.properties 覆盖它。

这不太可能,对吧?读取属性的顺序如下:

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

所以如果我在我的启动器中使用@PropertySource 来设置属性,我的启动器的用户将无法通过application.properties 覆盖它。更改顺序并将@PropertySource 设置为第8 号不是有意义吗?

或者有没有办法实现我想要的?

【问题讨论】:

标签: java spring spring-boot


【解决方案1】:

@PropertySource 的顺序绝对值得商榷。在那次辩论之前,尽管您应该能够在侦听器或初始化程序中添加自己的属性源(例如现有的配置文件侦听器)。

【讨论】:

猜你喜欢
  • 2016-07-05
  • 2014-11-15
  • 2017-11-03
  • 2016-04-16
  • 1970-01-01
  • 2019-01-05
  • 2016-12-27
  • 2019-04-13
  • 2016-07-06
相关资源
最近更新 更多