自定义 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 启动器不应用属性的主要内容,如果未能解决你的问题,请参考以下文章
使用 IntelliJ 在 Spring Boot 中自定义应用程序属性
使用自定义 ErrorAttributes 测试 Spring Boot 应用程序?