对SpringBoot的@ComponentScan 和@MapperScan区别进行讲解

@ComponentScan 情况与 @MapperScan 有所不同。

  1. @ComponentScan 的作用:

    • 它告诉 Spring 在哪些包中寻找被 Spring 管理的组件。

    • 它会扫描指定包及其子包中的类。

  2. 需要组件注解:

    • @MapperScan 不同,@ComponentScan 本身不会自动将包中的所有类注册为 Spring Bean。

    • 它只会注册那些带有特定注解的类。

  3. 常用的 Spring 组件注解:

    • @Component:通用的组件注解

    • @Service:用于标记服务层组件

    • @Repository:用于标记数据访问层组件

    • @Controller:用于标记控制器组件

    • @Configuration:用于标记配置类

  4. 为什么需要这些注解:

    • 这些注解告诉 Spring 哪些类应该被作为 Bean 管理。

    • 它们也提供了语义信息,帮助开发者理解每个类的用途。

  5. 自动检测:

    • Spring 只会自动检测和注册带有这些注解的类。

    • 没有这些注解的类,即使在 @ComponentScan 指定的包中,也不会被自动注册为 Bean。

  6. 例外情况:

    • 某些特殊情况下,类可能不需要显式的组件注解就能被 Spring 管理,例如:

      • 使用 @Configuration 类中的 @Bean 方法创建的 Bean。

      • 某些 Spring Boot 启动器自动配置的 Bean。

  7. @MapperScan vs @ComponentScan

    • @MapperScan 是 MyBatis-Spring 提供的特殊注解,专门用于 Mapper 接口。

    • @ComponentScan 是 Spring 的通用组件扫描机制,需要配合组件注解使用。

总结:使用 @ComponentScan 时,通常还需要在要被 Spring 管理的类上添加 @Component 或其他相应的注解(如 @Service@Repository 等)。这与 @MapperScan 的行为不同,后者可以直接管理指定包中的所有 Mapper 接口而无需额外注解。

如果希望某个类被 Spring 管理,通常需要确保:

  1. 该类位于 @ComponentScan 扫描的包中。

  2. 该类标有适当的 Spring 组件注解。

这种设计允许更精确地控制哪些类应该被 Spring 容器管理,同时也提供了更好的代码可读性和语义信息。

  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值