多模块Maven项目中,spring无法扫描到子模块jar包中的bean注解
前提
项目是由N个project组成的多模块Maven项目:
- web模块,打包成war
- 其他子模块,打包成jar,由maven根据pom.xml的dependencies自动打包放入web模块的WEB-INF/lib
问题
其他子模块也用到了spring的注解,例如@Service、@Controller等等
当使用Weblogic启动项目后,初始化Spring IOC容器失败,报各种NoSuchBeanException异常
解决方法
在对应的 子模块 的 pom.xml 文件中添加plugin,然后重新打包
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<configuration>
<archive>
<manifest>
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
</manifest>
</archive>
</configuration>
</plugin>
总结
该方法类似于使用eclipse,在打包 非Maven项目 时选择Add directory entries选项
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统