1、<!-- 启用注解扫描,并定义组件查找规则 ,mvc层只负责扫描@Controller -->

[java]  view plain  copy
  1. <context:component-scan base-package="com.nn.web.controller"  
  2.         use-default-filters="false">  
  3.         <context:include-filter type="annotation"  
  4.             expression="org.springframework.stereotype.Controller" />  
  5.     </context:component-scan>  


2、在context:component-scan可以添加use-default-filters,spring配置中的use-default-filters用来指示是否自动扫描带有@Component@Repository@Service@Controller的类。默认为true,即默认扫描。


3、如果想要过滤其中这四个注解中的一个,比如@Repository,可以添加<context:exclude-filter />子标签:

[java]  view plain  copy
  1. <context:component-scan base-package="tv.crm" scoped-proxy="targetClass" use-default-filters="true">  
  2.     <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Repository"/>  
  3. </context:component-scan>  

[java]  view plain  copy
  1. </pre><p></p><pre>  

4、<context:include-filter/>子标签是用来添加扫描注解的。

[java]  view plain  copy
  1. <context:component-scan base-package="tv.crm" scoped-proxy="targetClass" use-default-filters="false">  
  2.     <context:include-filter type="annotation" expression="org.springframework.stereotype.Repository"/>  
  3. </context:component-scan>  

5、 但是如果添加和排除的是相同, 则必须 include-filter 在前, exclude-filter 在后,否则配置不符合 spring -context-3.0.xsd 要求, Spring 容器解析时会出错。上面的配置会把 @Repository 注解的类排除掉。
[java]  view plain  copy
  1. <span style="font-size:18px;"><context:component-scan base-package="tv.crm" scoped-proxy="targetClass" use-default-filters="false">  
  2. <context:include-filter type="annotation" expression="org.springframework.stereotype.Repository"/>  
  3. <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Repository"/>  
  4. </context:component-scan></span>