前言
在Spring编程中,我有有时候需要通过依赖注入来使用容器中管理的Bean创建对象.但是有两种常用的注解@Autowired和@Resource他们都有什么区别呢?
正文
Autowired注解和Resource注解都是用于依赖注入的注解,但是他们在实现和使用中会有一点点的不同.
相同点
依赖注入:
两个注解都用于实现依赖注入,可以将依赖项或者资源自动注入到目标对象中.
方便性
它们二位都提供了一种十分简洁的方式来声明和解决对象之间的依赖关系,减少了手动编写依赖注入代码的工作量.
自动匹配
不论是Autowired还是Resource,都支持根据类型进行自动匹配,找到与目标字段, 构造函数或者方法的参数类型匹配的依赖项或资源进行注入.
灵活性
它们都允许将依赖注项或资源注入到不同的目标对象中, 包括字段, 构造函数和方法
不同点
Autowrited注解
Autowrited注解是Spring框架中的注解, 用于自动装配依赖关系. 通过在需要注入的字段, 构造函数或者方法上添加@Autowrited
注解, Spring框架会根据类型(ByType)进行自动装配. 它可以基于类型进行匹配, 并且在Spring容器中寻找与所需要的类型兼容的依赖项进行注入.
Resource注解
Resource注解是Java标准库中的注解, 用于进行资源注入. 它可以通过名称(ByName)或类型(ByType)进行注入. 通过在需要注入的字段, 构造函数和方法上添加@Resource
注解, 可以将匹配的资源注入到目标对象中. @Resource注解可以通过name属性指定资源的名称, 也可以通过type属性指定资源的类型.
在什么情况下它们可以等价呢?
根据上文所述, 当使用Autowired注解时,Spring框架会根据类型进行自动装配, 而当使用Resource注解时, 可以通过类型和名称进行资源的注入. 如果在Spring容器中存在唯一匹配的依赖项或资源, 那么使用Autowired注解和Resource注解都可以成功注入该依赖项或资源, 也就是说@Autowrited
注解和@Resource
注解可以等价.
结语
在开发中我总是发现@Autowrited
注解有时候在idea中会有一个弱警告, 但是使用@Resource
弱警告就会消失, 而且也不影响代码实现. 既然它俩在看起来都一样的情况下, 为什么它俩会同时存在呢? 本着存在即合理的原则, 本文就简单讲述了@Autowrited
注解和@Resource
注解的异同.
评论区