@Resource注解是什么作用,和@bean区别是什么?

简介: @Resource注解是什么作用,和@bean区别是什么?

@Resource 注解就像是 Java 开发的快递小哥,专门用来送依赖关系到你的代码门口。它的主要工作就是帮你实现依赖注入,把其他组件(比如类、对象、bean,啥的)送到你需要的地方。

具体来说:

  1. 依赖注入: @Resource 负责把其他组件注入到你标记的字段、方法或构造函数里。就像是在给你的类里面塞积木,让你的代码更好玩、更有趣。
  2. 指定注入的对象: 你可以通过 name 属性指定你要送进来的依赖的名字,就像在点外卖时指定你要的菜名一样。
  3. 按名称匹配: 如果你没指定名字,它会按照字段或方法的名字去找对应的依赖。就像找猫奴一样,你叫“喵喵”,它就找个“喵喵”的对象送过来。
  4. 按类型匹配: 如果你连名字都不想管,直接放 @Resource,它就会根据类型找个对应的依赖。当然,如果有多个同类型的对象,你可以加点儿料,比如 @Qualifier 注解,指定具体哪个。


其实@Resource 就是你的 Java 代码中的“送货小哥”,让依赖关系更清晰,代码更整洁。有了它,你的代码就像是住进了豪华别墅,各种服务都送上门啦~


到这里会有人提出疑问了。它和@bean的区别是什么呢?


@Bean 和 @Resource 是两种不同的方式来处理依赖注入的。具体来说:


  • @Bean 注解: 你在配置类里用 @Bean 注解方法,Spring 会调用这个方法,把返回的对象交给容器,然后你就可以通过 @Autowired 或者 ApplicationContext 来获取这个 Bean。


@Configuration public class MyConfig { @Bean public MyService myService() { return new MyService(); } }

  • @Resource 注解: 用在字段、方法或构造函数上,告诉 Spring 在容器中找一个匹配的对象注入进来。
    public class MyService { @Resource private MyDao myDao; // 其他代码... }


所以,两者都可以实现依赖注入,你可以根据自己的喜好和项目需要选择使用哪一种方式。有时候,@Bean 更适合在配置类中定义一些复杂的 Bean,而 @Resource 更适合在业务类中注入简单的依赖。


如果你在普通的业务类中使用 @Bean 注解,Spring 是不会识别它的,也就不能正确地将其注册为 Bean。通常在业务类中使用 @Autowired 或者 @Resource 这样的注解来进行依赖注入。


所以,@Bean 注解主要用在配置类的方法上,帮助你将对象注册到 Spring 容器中。


拓展


  • @Autowired 是 Spring 框架提供的注解,用于实现依赖注入。它是 Spring 比较常用且强大的注解之一。
  • 按类型注入: 通过类型进行匹配,如果容器中存在多个相同类型的 Bean,可以结合 @Qualifier 注解指定具体的 Bean。
  • 支持构造函数注入: 可以用在构造函数上,通过构造函数注入依赖。

如果你在一个纯粹的 Spring 项目中,或者你对容器的选择没有太多限制,建议使用 @Autowired 它是 Spring 的一部分,更灵活且功能强大。



相关文章
|
Java Spring 容器
@Resource 这个注解什么用啊
@Resource 这个注解什么用啊
660 0
|
前端开发 Java 开发者
深入理解Spring Boot中的@Service注解
【4月更文挑战第22天】在 Spring Boot 应用开发中,@Service 注解扮演着特定的角色,主要用于标识服务层组件。本篇技术博客将全面探讨 @Service 注解的概念,并提供实际的应用示例,帮助开发者理解如何有效地使用这一注解来优化应用的服务层架构
2912 1
|
数据可视化 Java uml
IDEA这个功能真强大!一键把整个项目代码绘制成UML类图...
IDEA这个功能真强大!一键把整个项目代码绘制成UML类图...
5641 0
IDEA这个功能真强大!一键把整个项目代码绘制成UML类图...
|
自然语言处理 IDE JavaScript
Fitten Code
【8月更文挑战第30天】
648 4
|
NoSQL 前端开发 Redis
Windows 下安装和配置 Redis (图文教程)
Windows 下安装和配置 Redis (图文教程)
springboot静态资源目录访问,及自定义静态资源路径,index页面的访问
本文介绍了Spring Boot中静态资源的访问位置、如何进行静态资源访问测试、自定义静态资源路径和静态资源请求映射,以及如何处理自定义静态资源映射对index页面访问的影响。提供了两种解决方案:取消自定义静态资源映射或编写Controller来截获index.html的请求并重定向。
springboot静态资源目录访问,及自定义静态资源路径,index页面的访问
|
NoSQL Java Redis
开发实战:使用Redisson实现分布式延时消息,订单30分钟关闭的另外一种实现!
本文详细介绍了 Redisson 延迟队列(DelayedQueue)的实现原理,包括基本使用、内部数据结构、基本流程、发送和获取延时消息以及初始化延时队列等内容。文章通过代码示例和流程图,逐步解析了延迟消息的发送、接收及处理机制,帮助读者深入了解 Redisson 延迟队列的工作原理。
|
Java Maven Spring
如何在idea中创建Springboot项目? 手把手带你创建Springboot项目,稳!
文章详细介绍了在IDEA中创建Spring Boot项目的过程,包括选择Spring Initializr、配置项目属性、选择Spring Boot版本、导入依赖、等待依赖下载以及项目结构简介。
14232 1
|
Java 关系型数据库 开发工具
idea创建不了spring2.X版本,无法使用JDK8,最低支持JDK17 , 如何用idea创建spring2.X版本,使用JDK8解决方案
本文提供了解决方案,如何在IDEA中创建Spring 2.X版本的项目并使用JDK8,尽管Spring 2.X已停止维护且IDEA不再直接支持,通过修改pom.xml或使用阿里云的国内源来创建项目。
1472 0
idea创建不了spring2.X版本,无法使用JDK8,最低支持JDK17 , 如何用idea创建spring2.X版本,使用JDK8解决方案
|
网络协议 关系型数据库 MySQL
MySQL报ERROR 2002 (HY000)解决
通过上述步骤,可以有效地解决MySQL连接时出现的 `ERROR 2002 (HY000)`错误。这些步骤包括检查和启动MySQL服务、配置文件检查、套接字文件检查、日志文件分析、进程检查、防火墙设置、客户端配置和最终的MySQL重装。确保每个步骤都按顺序执行,有助于快速定位和解决问题,使MySQL服务器恢复正常运行。
8617 0