@Autowired @Resoure @mapper @Component @service @Repository@controller @bean到底有什么区别

@Autowired

@Autowired 是 Spring 框架提供的注解,用于自动装配 bean。Spring 容器会查找一个匹配的 bean 来自动装配到标注了该注解的属性上。如果找到多个类型匹配的 bean,可以通过 @Qualifier 注解来指定具体的 bean 名称。

@Resource

@Resource 是 Java 标准库提供的注解,功能与 @Autowired 类似,也用于自动装配。区别在于 @Resource 允许你通过名称来装配 bean,而 @Autowired 默认按类型装配。此外,@Resource 还支持 Java EE 的特定功能,如查找资源。

@Mapper

@Mapper 是 MyBatis 框架提供的注解,用于标注接口,表示这个接口是一个 MyBatis 的 Mapper 接口。Spring Boot 在启动时会自动扫描这些接口,并为它们创建代理实现类,这样你就可以直接注入这些接口来使用。

@Component

@Component 是一个通用概念的注解,表示一个类是一个 Spring 组件。Spring 会扫描到这些注解,并将这些类作为 bean 加入到 Spring 容器中。其他特定的注解(如 @Service@Repository 和 @Controller)实际上都是 @Component 的特殊形式。

@Service

@Service 用于标注业务逻辑层组件。它是一个特殊类型的 @Component,用于将业务逻辑层的类标记为 Spring 的一个 Bean。

@Controller

@Controller 用于标注 MVC 控制器。它也是一个特殊类型的 @Component,用于将 MVC 控制器层的类标记为 Spring 的一个 Bean。通常与视图解析器一起使用,返回视图名称。

@Repository 

@Repository是 Spring 框架中的一个核心注解,主要用于标识数据访问层(DAO 层)的类。这个注解告诉 Spring 框架需要为标注的类创建实例,并将其纳入到 Spring 的上下文中进行统一管理。 

@Bean

@Bean 注解用于方法上,表示该方法将返回一个对象,这个对象应该注册为 Spring 应用上下文中的 bean。通常与 Java 配置类一起使用,以替代传统的 XML 配置方式。

什么时候用@Autowired什么时候用@Resource
使用@Autowired的情况:
  1. 按类型自动装配:当你希望Spring容器根据类型自动装配依赖时,可以使用@Autowired。Spring会查找容器中匹配该类型的bean,并将其注入到标注了@Autowired的属性或构造器参数中。

  2. 构造器注入:如果你更倾向于使用构造器注入,那么@Autowired是一个很好的选择。它可以标注在构造器上,以确保在创建bean时注入所需的依赖。

  3. Spring的默认推荐:随着Spring版本的发展,@Autowired成为了Spring官方推荐的依赖注入方式。它与Spring的其他特性(如Java配置和条件注解)配合得更好。

使用@Resource的情况:
  1. 按名称自动装配:当你需要根据bean的名称进行自动装配时,应该使用@Resource。你可以通过name属性指定bean的名称,Spring会查找并注入与该名称匹配的bean。

  2. 与Java EE集成:如果你的项目需要与Java EE集成,或者你需要使用Java EE提供的某些特性(如JNDI查找),那么@Resource可能是一个更好的选择,因为它来自Java标准库,与Java EE环境兼容。

  3. 遗留代码或特定需求:如果你的项目中有一些遗留代码,或者你有特定的需求需要使用@Resource,那么可以根据实际情况选择使用它。

总结:
  • 如果你希望根据类型进行自动装配,并且喜欢使用Spring的推荐方式,那么选择@Autowired
  • 如果你需要按名称进行自动装配,或者你的项目与Java EE环境紧密集成,那么选择@Resource
总结:
  • @Autowired 和 @Resource 是自动装配的注解,用于自动注入依赖。
  • @Mapper 是 MyBatis 的注解,用于标注 Mapper 接口。
  • @Component@Service 和 @Controller 都是 Spring 的组件注解,用于将类标记为 Spring 的 Bean。其中,@Service 专注于业务逻辑层,@Controller 专注于 MVC 控制器层。
  • @Bean 用于方法上,表示该方法将返回一个对象,并注册为 Spring 应用上下文中的 bean。
  • 9
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值