自定义 Spring Boot 启动器不应用属性

Posted

技术标签:

【中文标题】自定义 Spring Boot 启动器不应用属性【英文标题】:Custom Spring boot starter do not apply property 【发布时间】:2018-12-24 14:19:13 【问题描述】:

创建自定义 Spring Boot 启动器 我的弹簧启动启动器 从 spring-boot-starter-parent. 在我的 Starter 的源文件夹中添加包含属性的 applicatin.property 文件以配置日志记录:

logging.pattern.console=<custom pattern>

然后将我的 starter 添加到我的 spring boot 应用程序依赖项中,但由于某种原因,日志记录模式不会更改为我的 from starter。 如何在我的自定义启动器中描述要覆盖的 Spring Boot 属性(如日志记录属性或默认端口属性)?

【问题讨论】:

文件需要拼写正确,application.properties 您能否澄清一下“将我的启动器添加到我的 Spring Boot 应用程序依赖项”的意思 - 您是否将配置文件放在单独的项目中,然后将该项目包含在另一个项目中?为什么不直接放在你要配置的项目中呢? 【参考方案1】:

您不能像这样更改应用程序配置。 environment 由一组PropertySource 实例组成,每个实例描述一个配置源。列表和优先级为documented in the user guide。

关于类路径根目录的application.properties,您不能在启动器中使用它,因为这是应用程序配置的一个非常典型的位置:用户在项目中创建文件后,它将优先到你在启动器中定义的那个。

如果你想在你的starter中操作环境,你需要实现一个EnvironmentPostProcessor并在Environment中添加一个自定义的PropertySource。这也是described in the documentation。

【讨论】:

以上是关于自定义 Spring Boot 启动器不应用属性的主要内容,如果未能解决你的问题,请参考以下文章

用于指定分发管理的自定义 spring boot 启动器

使用 IntelliJ 在 Spring Boot 中自定义应用程序属性

Spring Boot:自定义属性配置和测试

使用自定义 ErrorAttributes 测试 Spring Boot 应用程序?

使用自定义 ErrorAttributes 测试 Spring Boot 应用程序?

自定义Spring Boot的启动器