美文网首页
使用说明

使用说明

作者: 暗剑伤人 | 来源:发表于2017-08-22 16:37 被阅读0次

    在xml文件配置了<context:component-scan>标签后,spring容器可以自动去扫描base-pack所指定的包或其子包下面的java类文件,如果扫描到有@Component、@Controller、@Service 、@Repository等注解修饰的Java类,则将这些类注册为spring容器中的bean。

    注意点:

    • 如果配置了<context:component-scan>标签元素,那么<context:annotation-config/>标签就可以不用在xml中配置了,因为前者包含了后者。

    • <context:component-scan>有一个use-default-filters属性,该属性值默认为true,这就意味着会扫描指定包下的
      全部的有@Component、@Controller、@Service 、@Repository等注解修饰的Java类,则将这些类注册为
      spring容器中的bean。
      例如在配置文件中添加如下代码:

      <context:component-scan base-package="com.bank.account.web"/>
      

      因为此时属性Use-default-filter的值为true,那么会对base-package包或者子包下所有的java类进行扫描,并
      把匹配的java类注册成spring容器中的bean。

    • <context:component-scan>还提供了两个子标签:

      • <context:include-filter>

        • 如果你只想扫描指定包下面的Controller,可以借助于子标签<context:incluce-filter>,如下代码所示:

            <context:component-scan base-package="com.bank.account.web.controller">  
                  <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
            </context:component-scan>  
          

          以上xml的配置就会告之spring容器只扫描base-package(此处:com.bank.account.web.controller)指定包下的有@Controller修饰的java类,并注册成spring窗口中的bean。

        • 但是因为use-dafault-filter在上面并没有指定,默认就为true,所以当把上面的配置改成如下所示的时候,就会与之相反的结果(注意base-package包值得变化)

              <context:component-scan base-package="com.bank.account.web">  
                <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>   
              </context:component-scan>  
          

          此时,spring不仅扫描了@Controller修饰的javaod ,还扫描了指定包或其子包下有@Service 、
          @Repository注解修饰的java类此时指定的include-filter没有起到作用,只要把use-default-filter设置成
          false就可以了。这样就可以避免在base-packeage配置多个包名。

      • <context:exclude-filter>
        项目中,在base-package指定的包中有的子包是不含有注解的,所以这些包可以不进行扫描,此时可以指定
        <context:exclude-filter>来进行过滤,说明此包不需要被扫描。
        Use-dafault-filters=”false”的情况下:<context:exclude-filter>指定的包不进行相应注解的扫描,
        <context:include-filter>指定包或其子包进行相应注解的扫描。

    相关文章

      网友评论

          本文标题:使用说明

          本文链接:https://www.haomeiwen.com/subject/xneldxtx.html