Spring无法跨模块注入Bean?求排查解决方法
问题根源与解决方案
核心问题是模块A的依赖中未引入模块B,导致启动模块A时,模块B的实现类并未被加载到应用的Classpath中,Spring扫描包的配置再正确也找不到对应的Bean。
具体修复步骤
1. 给模块A添加模块B的依赖
修改模块A的pom.xml,加入对模块B的依赖:
<dependencies> <!-- 保留原有依赖,新增以下内容 --> <dependency> <groupId>com.company.exp</groupId> <artifactId>B</artifactId> <version>1.0-SNAPSHOT</version> <scope>compile</scope> </dependency> </dependencies>
2. 重新构建所有模块
在根项目目录下执行Maven命令,确保所有模块被正确编译、安装到本地仓库:
mvn clean install
3. 验证启动逻辑
此时启动模块A,Spring就能扫描到模块B中标记了@Service的CommonInterfaceImpl类,完成自动注入。
补充说明
- 模块B依赖模块A是为了引用
CommonInterface接口,但模块A作为启动入口,必须显式依赖模块B才能将其实现类纳入运行环境。 - 你配置的
scanBasePackages = "com.company.exp"是正确的,只要模块B的类被加载到Classpath,Spring就能扫描到该包下的Bean。
内容的提问来源于stack exchange,提问作者eight
相关产品推荐
相关产品推荐

