@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 的一部分,更灵活且功能强大。

猜你喜欢

转载自blog.csdn.net/m0_64880608/article/details/135040107