`

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】
  • 这只是个人的总结,有错误请指出
分享到:
评论

相关推荐

    异常解决:错误:namespace element 'annotation-config' … on JDK 1.5 and higher

    2. **XML配置问题**:确保你的Spring配置文件(如`applicationContext.xml`)正确包含了`&lt;context:component-scan&gt;`或`&lt;context:annotation-config&gt;`元素,它们是启用注解配置的关键。 3. **编译器设置**:检查你的...

    关于Spring的spring-beans-xsd和tx-xsd aop-xsd等

    它包括了如`&lt;context:component-scan&gt;`、`&lt;context:annotation-config&gt;`等元素,使得我们可以方便地启用注解驱动的配置和组件扫描,发现并自动装配带有特定注解的类。此外,它还支持消息源、AOP代理、事件监听等特性...

    Spring注解详解

    &lt;context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/&gt; &lt;context:include-filter type="annotation" expression="org.springframework.stereotype.Service"/&gt; ...

    集成springmvc spring hibernate的配置

    &lt;context:annotation-config /&gt; &lt;context:component-scan base-package="com.mvc.*"&gt; &lt;context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" /&gt; &lt;/context:component...

    spring mvc

    2. `&lt;context:component-scan&gt;`: - 这个元素告诉Spring扫描指定包及其子包,寻找带有`@Controller`注解的类,并将它们作为bean进行管理。 3. `&lt;mvc:annotation-driven&gt;`(通常也会包含,但此处未提供): - 这个...

    15、spring 配置以及使用 1

    在这个主题中,我们将深入探讨`&lt;context:annotation-config&gt;`与`&lt;context:component-scan&gt;`的区别,事务管理器的配置,以及Spring开发环境的选择和数据源的配置。 1. `&lt;context:annotation-config&gt;`和`&lt;context:...

    spring3.0的xsd文件.rar

    其次,`context.xsd`扩展了`beans.xsd`,提供了更多上下文相关的配置,如`&lt;context:component-scan&gt;`用于自动扫描并注册带有特定注解的bean,实现了基于注解的组件发现。此外,`&lt;context:property-placeholder&gt;`则...

    spring-framework-4.3.4.RELEASE-schema

    通过`&lt;aop:config&gt;`和`&lt;aop:advisor&gt;`等元素,我们可以定义切面、通知和匹配规则,实现代码的解耦和模块化。在这一版本中,Spring对AOP的Schema进行了细化,使得切面的定义更加精确和灵活。 再者,Spring的数据库...

    spring-framework-3.2.0.RC2-schema.zip

    `context`命名空间下的 `&lt;context:component-scan&gt;`、`&lt;context:property-placeholder&gt;`等元素,用于扫描组件、加载外部属性文件,增强了Spring的应用范围和灵活性。 "cache"模块则提供了缓存抽象,支持如 EhCache...

    struts2.3+hibernate3.6+spring3.1整合的纯xml配置的小项目

    &lt;context:component-scan base-package="org.whvcse"&gt;&lt;/context:component-scan&gt; &lt;tx:annotation-driven transaction-manager="txManager" /&gt; &lt;!-- &lt;aop:config&gt; &lt;aop:pointcut id="defaultServiceOperation" ...

    第十章 Spring 配置元信息(Configuration Metadata)1

    此外,`&lt;context:annotation-config&gt;`和`&lt;context:component-scan&gt;`分别用于启用注解驱动和扫描特定包下的@Component注解。 6. **基于Java注解装载配置元信息**:Java配置类通过`@Configuration`、`@Bean`等注解...

    使用Spring2.5的Autowired实现注释型的IOC

    在上面的配置文件中,我们使用了 `&lt;context:annotation-config/&gt;` 和 `&lt;context:component-scan base-package="testspring.main"/&gt;` 两个标签。 `&lt;context:annotation-config/&gt;` 用于启用注释型的 IOC,而 `&lt;context...

    spring注解使用

    在上面的配置文件中,我们使用了 `&lt;context:annotation-config/&gt;` 和 `&lt;context:component-scan&gt;` 两个元素。`&lt;context:annotation-config/&gt;` 元素用于激活注解驱动的 Bean, `&lt;context:component-scan&gt;` 元素用于...

    spring约束

    3. ** Context `.xsd`**:扩展了基本的Bean配置,引入了上下文相关的功能,如`&lt;context:component-scan&gt;`用于自动发现和注册bean,以及`&lt;context:property-placeholder&gt;`用于处理属性占位符。 4. ** JDBC `.xsd`**...

    JSP 中spring事务配置详解.docx

    在这个配置中,`&lt;context:component-scan&gt;`用于自动扫描指定包下的类,发现`@Repository`、`@Service`等注解并进行注册。`&lt;context:annotation-config&gt;`启用对注解的处理,使得我们可以使用`@Transactional`注解来...

    Dorado 整合前端框架vue.docx

    &lt;context:component-scan base-package="com.cupdata.controller"&gt;&lt;/context:component-scan&gt; &lt;/beans&gt; ``` 在 `com.cupdata.controller` 包下,添加控制器类,使用 `@RestController` 和 `@RequestMapping` 注解...

    Spring3注解介绍.docx

    3. **组件扫描**:通过`&lt;context:component-scan&gt;`元素,不仅注册注解处理器,还可以扫描指定包下的类,自动发现和处理注解: ```xml &lt;context:component-scan base-package="com.yourpackage"/&gt; ``` `base-...

    Spring的Annotation配置相关讲义

    `&lt;context:component-scan&gt;`元素用于指定需要扫描的包,这样Spring会自动发现这些包下标记了如`@Component`、`@Service`、`@Repository`等注解的类,并将它们注册为Bean。 接着,我们看DAO层的配置。使用`@...

    SSM框架笔记

    - `&lt;context:component-scan&gt;`: 扫描指定包下的组件。 - `&lt;context:annotation-config&gt;`: 启用注解驱动。 - `&lt;context:property-placeholder&gt;`: 引用外部属性文件。 - `&lt;mvc:resources&gt;`: 配置静态资源路径。 - `&lt;tx...

    spring包扫描配置的项目

    在Spring中,包扫描是通过`&lt;context:component-scan&gt;`标签实现的,该标签位于XML配置文件中。这个标签告诉Spring去指定的包及其子包下查找标记为`@Component`、`@Service`、`@Repository`和`@Controller`的类,这些...

Global site tag (gtag.js) - Google Analytics