Spring Boot依赖库中autoconfigured bean未加载到Spring上下文问题
跨项目Spring Boot自动配置Bean未生效的常见原因
- spring.factories配置路径错误
Spring Boot 2.7及以上版本默认扫描src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports文件作为自动配置入口,旧版本使用src/main/resources/META-INF/spring.factories。如果项目A的配置文件路径、文件名拼写错误,或配置文件中填写的MyAutoConfig全限定类名有误,Spring Boot启动时不会加载该自动配置类。 - 自动配置类条件未满足
检查MyAutoConfig上标注的@ConditionalOnClass、@ConditionalOnProperty、@ConditionalOnMissingBean等条件注解是否匹配项目B的运行环境。可在项目B的配置文件中添加debug=true,启动后查看控制台输出的条件评估报告,搜索MyAutoConfig即可确认该配置类是否被过滤。 - 自动配置类本身未被正确识别
确认MyAutoConfig是否标注了@Configuration(或Spring Boot 2.7+提供的@AutoConfiguration)注解,且该类以及Worker类的访问修饰符为public,不存在包私有、私有等外部项目无法访问的权限问题。 - 项目B的自动配置规则排除了目标类
检查项目B主类上@SpringBootApplication或@EnableAutoConfiguration注解的exclude、excludeName参数是否将MyAutoConfig加入了排除列表;同时确认scanBasePackages配置没有覆盖自动配置的扫描逻辑,导致配置类被重复扫描且过滤。 - 依赖传递异常
检查项目A中Spring Boot核心注解相关依赖是否被配置为compileOnly导致无法传递到项目B,或gradle的依赖管理规则中存在对项目A的排除逻辑,导致MyAutoConfig或Worker类未被引入项目B的运行时类路径。
内容的提问来源于stack exchange,提问作者hawarden_
相关产品推荐
相关产品推荐

