Spring 学习笔记(八)- component-scan 标签详解

1. <context:component-scan base-package=""/>

  1. 这标签是需要context的命名空间的。
  2. base-package:指定 spring 扫描注解的类所在的包。当需要扫描多个包的时候,可以使用逗号分隔。
  3. 如果只希望扫描特定的类,不是扫描包里的所有类的时候,可以使用 resource-pattern 属性来指定只扫描的包。
  4. 两个子标签
    • 子标签<context:exclude-filter type=“annotation” expression=""/> 配置在不扫描的类,可以有很多个这样的子标签。
    • 子标签<context:include-filter type=“annotation” expression=""/>
      配置要扫描的类,也可以有多个。

2. 举例

  1. 基本配置
<!-- 只是这样配置,可以访问到所有的 www.xq.spring 包及其子包有注解的对象!-->
<context:component-scan base-package="www.xq.spring"></context:component-scan>
  1. 加上 resource-pattern 来指定只扫描的包:
<!-- 表示只扫描 www.xq.spring.dao 下的 class 文件 -->
<context:component-scan base-package="www.xq.spring"
    resource-pattern="dao/*.class"></context:component-scan>
  1. 使用排除子节点:context:exclude-filter
<!-- 这样配置,@controller注解的类的对象就找不到了! -->
<context:component-scan base-package="www.xq.spring">
        <!-- expression:注解类的包全名 -->
		<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>
  1. 使用 context:include-filter 和 use-default-filters=“false” 配合使用
<!-- 除了包含的注解以外的注解的类的对象都找不到了! -->
<context:component-scan base-package="www.xq.spring" use-default-filters="false">
		<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
	</context:component-scan>
  1. 上面都是用的 type=annotation,下面在看一下 assignable
<!-- 排除 UserDao 这个接口以及这个接口的实现类! -->
<context:component-scan base-package="www.xq.spring" use-default-filters="false">
		<context:exclude-filter type="assignable" expression="www.xq.spring.dao.UserDao"/>
	</context:component-scan>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值