基于SpringBoot3.0构建SpringBootStarter注意事项
SpringBoot2 构建的 Starter 在 SpringBoot3 中引用的话会启动报错。
原因:spring.factories
的写法已废弃。
流传于网络的几乎所有教程已然成过期攻略。
然而 Spring 官方把这个 change log 放在了 3.0.0-M5 版本,真让人一阵好找:
https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.0.0-M5-Release-Notes
原文部分:
Auto-configuration Registration
Spring Boot 2.7 introduced a new META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports file for registering auto-configurations, while maintaining backwards compatibility with registration in spring.factories. With this release, support for registering auto-configurations in spring.factories has been removed in favor of the imports file.
下面贴出 2.x 版写法和 3.0 版本作对比。
SpringBoot 2.x 写法
文件目录:
resources
└── META-INF
└── spring.factories
其中 spring.factories
内容(示例):
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
org.looko.demomavenstarter.config.DemoMavenAutoConfiguration
Spring 3.0 写法
文件目录:
resources
└── META-INF
└── spring
└── org.springframework.boot.autoconfigure.AutoConfiguration.imports
其中 org.springframework.boot.autoconfigure.AutoConfiguration.imports
文件内容(示例):
org.looko.demomavenstarter.config.DemoMavenAutoConfiguration
另外要注意如果用 IDEA 基于 SpringBoot 项目去写 SpringBootStarter 时,除了不需要启动类外,还要删除 pom.xml
里的 <build></build>
标签。
评论
其他文章