@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 这个注解什么用啊
915 0
|
Java
Java @Data 注解详细说明
Data注解是 Lombok 提供的一个组合注解,它会为类自动生成一些常见方法的样板代码,包括 getter、setter、equals、hashCode 和 toString 方法。
3158 5
|
前端开发 Java 开发者
深入理解Spring Boot中的@Service注解
【4月更文挑战第22天】在 Spring Boot 应用开发中,@Service 注解扮演着特定的角色,主要用于标识服务层组件。本篇技术博客将全面探讨 @Service 注解的概念,并提供实际的应用示例,帮助开发者理解如何有效地使用这一注解来优化应用的服务层架构
3479 1
|
应用服务中间件
快速解决idea启动项目报错:Unable to open debugger port(127.0.0.1:58950):java.net.SocketException“socket closed
快速解决idea启动项目报错:Unable to open debugger port(127.0.0.1:58950):java.net.SocketException“socket closed
3924 0
|
数据可视化 Java uml
IDEA这个功能真强大!一键把整个项目代码绘制成UML类图...
IDEA这个功能真强大!一键把整个项目代码绘制成UML类图...
6860 0
IDEA这个功能真强大!一键把整个项目代码绘制成UML类图...
|
NoSQL Java Redis
StringRedisTemplete使用
`StringRedisTemplate`是Spring Data Redis中非常实用的工具类,简化了与Redis交互的操作。通过本文的介绍,读者可以了解如何配置和使用 `StringRedisTemplate`进行基本的Redis操作,并应用于实际的开发场景中。掌握这些技巧,可以显著提高开发效率和代码质量。
620 16
|
缓存 NoSQL Java
RedisTemplate操作Redis,这一篇文章就够了
redis是一款开源的Key-Value数据库,运行在内存中,由C语言编写。企业开发通常采用Redis来实现缓存。同类的产品还有memcache 、memcached 等。
3551 1
|
IDE Java 开发工具
深入Spring Boot:怎样排查expected single matching bean but found 2的异常
写在前面 这个demo来说明怎么排查一个常见的spring expected single matching bean but found 2的异常。
7125 0
|
Java Maven Spring
如何在idea中创建Springboot项目? 手把手带你创建Springboot项目,稳!
文章详细介绍了在IDEA中创建Spring Boot项目的过程,包括选择Spring Initializr、配置项目属性、选择Spring Boot版本、导入依赖、等待依赖下载以及项目结构简介。
22273 1

热门文章

最新文章