【发布时间】: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 覆盖它。
这不太可能,对吧?读取属性的顺序如下:
- 命令行参数。
- Java 系统属性 (
System.getProperties())。 - 操作系统环境变量。
- 来自
java:comp/env的JNDI 属性 - 一个
RandomValuePropertySource,仅在random.*中具有属性。 -
@PropertySource注释在您的@Configuration类中。 - 打包 jar 之外的应用程序属性(
application.properties包括 YAML 和配置文件变体)。 - 应用程序属性打包在您的 jar 中(
application.properties包括 YAML 和配置文件变体)。 - 默认属性(使用
SpringApplication.setDefaultProperties指定)。
所以如果我在我的启动器中使用@PropertySource 来设置属性,我的启动器的用户将无法通过application.properties 覆盖它。更改顺序并将@PropertySource 设置为第8 号不是有意义吗?
或者有没有办法实现我想要的?
【问题讨论】:
-
由于 Dave Syer,物业订单已更改:github.com/spring-projects/spring-boot/commit/…
标签: java spring spring-boot