需将spring boot 2.x starter迁移至3.0:删除spring.factories,创建meta-inf/spring/org.springframework.boot.autoconfigure.autoconfiguration.imports文件并写入自动配置类全限定名,改用@autoconfiguration注解替代@configuration+@enableautoconfiguration组合,启用debug=true验证生效。

SpringBoot 3.0自动配置原理改动大怎么快速上手:你需要在2小时内完成一个自定义Starter的迁移并验证其生效,而不是反复比对旧文档或猜测类加载顺序。旧版spring.factories文件已被彻底移除,任何残留引用都会导致自动配置类完全不加载,且无任何报错提示。
确认项目已切换到新机制
打开项目根目录下的META-INF/spring/文件夹,检查是否存在org.springframework.boot.autoconfigure.AutoConfiguration.imports文件。如果不存在,说明项目仍停留在2.x兼容模式,必须手动创建该路径及文件——Spring Boot 3.0启动时只认这个路径,【不会 fallback 到 spring.factories】。
用任意文本编辑器新建该文件,写入一行合法的自动配置类全限定名,例如:com.example.demo.autoconfigure.DemoAutoConfiguration。注意:每行只能写一个类名,不能有空格、分号或注释;文件编码必须为UTF-8无BOM。
重写自动配置类结构
将原使用@Configuration + @ConditionalOnClass等注解的配置类,改为使用@AutoConfiguration作为顶层注解。这个注解是Spring Boot 3.0专属,替代了过去@Configuration配合@EnableAutoConfiguration的手动组合方式。
原写法(Spring Boot 2.x):
@Configuration<br>@ConditionalOnClass(DataSource.class)<br>@EnableConfigurationProperties(DataSourceProperties.class)<br>public class DataSourceAutoConfig { ... }
新写法(Spring Boot 3.0):
@AutoConfiguration<br>@ConditionalOnClass(DataSource.class)<br>@EnableConfigurationProperties(DataSourceProperties.class)<br>public class DataSourceAutoConfiguration { ... }
注意:@AutoConfiguration自带@Configuration语义,无需再叠加@Configuration;若保留旧写法,会导致该类被加载两次——一次由AutoConfigurationImportSelector触发,一次由常规@ComponentScan扫描,极易引发Bean定义冲突。
迁移自动配置注册入口
第一步:删除项目中所有META-INF/spring.factories文件(包括依赖JAR包里可能存在的旧文件)。这一步不可跳过,因为即使你写了新的AutoConfiguration.imports,只要classpath下存在任意一个spring.factories,Spring Boot 3.0就会抛出IllegalStateException: spring.factories is not supported in Spring Boot 3.0异常并中断启动。
第二步:确保你的自定义Starter模块的src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports文件中,每一行都是一个可被ClassLoader加载的、真实存在的自动配置类全限定名。路径错误、类名拼写错误、类未编译进JAR,都会导致该配置类静默失效——它不会报错,也不会出现在自动配置报告中。
第三步:在主应用的application.properties中添加debug=true,启动后观察控制台输出的Automatically configured:和Excluded automatically configured:列表。只有出现在前者中的类才真正生效;后者列出的是因条件不满足被跳过的类,不是迁移失败的标志。











