区别:
- 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】 - 这只是个人的总结,有错误请指出
- 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/>