springMVC 和 Spring 父子容器对于不同的类进行管理所出现的冲突。
一般的解决方案为,针对 核心业务层的代码和 web层的代码实现分别加载。
这里就涉及到了包扫描的详细内容。
以下表示使用默认的过滤规则,扫描 com.aa.bb包及其子包下的所有类
<context:component-scan base-package="com.aa.bb" />以上等同于
<context:component-scan base-package="com.aa.bb" use-default-filters="true"/>以下表示使用默认的过滤规则,扫描 com.aa.bb包及其子包下的所有类,但是排除注解为 Controller的类
<context:component-scan base-package="com.aa.bb" >
<context:exclude-filter type="annotation"
expression="org.springframework.stereotype.Controller"/>
</context:component-scan>以上等同于
<context:component-scan base-package="com.aa.bb" use-default-filters="true" >
<context:exclude-filter type="annotation"
expression="org.springframework.stereotype.Controller"/>
</context:component-scan>映射到实际场景,以上的配置,适合配置Spring容器的扫描规则,即排除掉对注解为Controller的类(大扫描粒度的前提下,排除小粒度),
而springMVC所扫描的粒度,应该是只扫描注解为Controller的类,即应该是一种扫描更为精准的粒度:
<context:component-scan base-package="com.aa.bb" use-default-filters="false" >
<context:include-filter type="annotation"
expression="org.springframework.stereotype.Controller"/>
</context:component-scan>以上表示,在com.aa.bb的包及其子包的范围下,只扫描注解为Controller的类
转载于:https://my.oschina.net/u/1182369/blog/650298