spring的<context:annotation-config>和<context:component-scan>区别

区别:

  • 1、<context:annotation-config>:【自动装配】 是用于激活(@Autowired)那些已经在spring容器里注册过的bean(无论是通过xml的方式还是通过package sanning的方式)。
  • 2、<context:component-scan>:【自动注册+装配】<context:component-scan>除了具有<context:annotation-config />的功能之外,还具有自动将带有@component,@service,@Repository等注解的对象注册到spring容器中的功能。
  • <context:component-scan/>包含了<context:annotation-config/>

<context:component-scan>扫描内容:

  • 1、配置:<context:component-scan base-package="com.test" />

              效果:扫描com.test包下的带有@component,@service,@Repository等注解的类,并注册到spring容器中

  • 2、配置:<context:component-scan base-package="com.test"  use-default-filters="false"/>

            效果:啥也不扫描,也没有向spring注册任何的类

  • 3、配置:

<context:component-scan base-package="com.test" use-default-filters="false">
  <!-- 扫描符合@Service的类 -->
  <context:include-filter type="annotation" expression="org.springframework.stereotype.Service" />
</context:component-scan>

              效果:扫描com.test包下的带有@service注解的类,并注册到spring容器中

  • 4、配置:

<context:component-scan base-package="com.test" use-default-filters="false">
 <context:include-filter type="regex" expression="com.test.entity.*" />
</context:component-scan>

              效果:扫描com.test.entity包下的带所有类,并注册到spring容器中

 

  • 5、配置:

<context:component-scan base-package="com.test" >

<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service" />
</context:component-scan>

              效果:扫描com.test包下的带有@component,@Repository等注解的类,并注册到spring容器中(注意:不包含@service注解的类)

  • 6、配置:
    <context:component-scan base-package="com.test" use-default-filters="false">
      <!-- 扫描符合@Service @Repository的类 -->
      <context:include-filter type="annotation" expression="org.springframework.stereotype.Service" />
      <context:include-filter type="annotation" expression="org.springframework.stereotype.Repository" />
         <context:include-filter type="regex" expression="com.test.entity.*"/>
    </context:component-scan>
    效果:扫描com.test包下的@Service、@Repository注解的实体和com.test.entity包下的所有实体【不会扫描@component等其他注解,因为use-default-filters="false"关闭了默认扫描方式】
  • 总结:
     use-default-filters默认是true,即默认是会扫描base-package包及子包下的@component,@service,@Repository注解,若设置为false,则不扫描@component,@service,@Repository注解
    context:include-filter是以base-package为根目录,自定义添加需要扫描的bean【即不需要添加任何注解都能被扫描的bean】
  • 这只是个人的总结,有错误请指出
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值