spring包扫描问题

Posted #心有独钟#

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring包扫描问题相关的知识,希望对你有一定的参考价值。

  最近做项目时发现一个spring包扫描问题,项目中使用spring、springMVC、mybatis框架,因为整个项目是按模块来分布式开发,最终将各个模块整合在一起,但是整合时发现有些模块的service层和controller层包没有扫描到。

  举个例子:A模块的service层包为 com.project.A.service,B模块的service层的包为com.project.base.B.service;在spring的配置文件里包扫描器的配置为:

<context:component-scan base-package="com.project.*.service" />,但结果发现这么写扫描包并没有扫描到B模块的service层,后来特意查阅了一下*号通配符在包路径中的含义。

   “*”:匹配零个或多个字符串,如“cn/*/config.xml”将匹配“cn/javass/config.xml”,但不匹配匹配“cn/config.xml”和“cn/javass/test/config.xml”;而“cn/config-*.xml”将匹配“cn/config-dao.xml”; 

   “**”:匹配路径中的零个或多个目录,如“cn/**/config.xml”将匹配“cn /config.xml”,也匹配“cn/javass/spring/config.xml”;而“cn/javass/config-**.xml”将匹配“cn/javass/config-dao.xml”,即把“**”当做两个“*”处理。

  所以,一个*号并不能匹配多个目录,上面的问题解决方法为:将包扫描器配置改为<context:component-scan base-package="com.project.**.service" />即可。

以上是关于spring包扫描问题的主要内容,如果未能解决你的问题,请参考以下文章

spring 机制 扫描包

ssm框架中怎么让spring扫描多个包

Spring IoC 源码分析 (基于注解) 之 包扫描

Spring IoC 源码分析 (基于注解) 之 包扫描

spring 2.5 扫描注入问题

Spring 扫描注入