千家信息网

Spring的@Autowired与@Resource有什么区别

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,今天小编给大家分享一下Spring的@Autowired与@Resource有什么区别的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读
千家信息网最后更新 2026年11月03日Spring的@Autowired与@Resource有什么区别

今天小编给大家分享一下Spring的@Autowired与@Resource有什么区别的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

开始讲解之前我们首先要明白一点,这个两个注解都是用来完成组件的装配的,即利用依赖注入(DI),完成对ioc容器当中各个组件之间依赖的装配赋值。

@Autowired注解

来源:@Autowired为Spring提供的注解,需要导入包org.springframework.beans.factory.annotation.Autowired。

说明:@Autowired采取的默认策略为按照类型注入(by-type)。要求容器中一定要有这个类型的对象,如果没有将会报错,抛出异常。也可以通过设置可以@Autowired(required = false),来告诉容器,如果没有可以不注入。

示例:

public class StudentController {    @Autowired    private StudentServer studentServer; }

如上代码所示,这样装配会去spring容器中找到类型为StudentServer的类,然后将其注入进来。这样会产生一个问题,当容器中有多个相同类型的对象,会造成无法选择具体注入哪一个的情况从而导致报错,这个时候我们可以通过@Qualifier("beanname"),来指定装配哪个对象。

public class StudentController {    @Autowired    @Qualifier(name="studentServer")        private StudentServer studentServer; }

@Qualifier注解会告诉spring去装配StudentServer对象。这个时候我们就可以成功注入正确的对象了。

@Resource注解

来源:@Resource注解由J2EE提供,需要导入包javax.annotation.Resource。

说明:@Resource可以设置by-name(按名称)和by-type(按类型)来进行自动装配。如果没指定则默认按照ByName自动注入。

示例:

public class StudentController {    @Resource      private StudentServer studentServer; }

没有指定name,又没有指定type,该注解会自动按照by-name方式进行装配,如果匹配则自动装配。如果没有匹配,则按照by-type进行查找,如果都没查找到,那么则抛出异常。

public class StudentController {    @Resource(name="studentServer")      private StudentServer studentServer; }

指定了name,则从上下文中查找名称(id)匹配的bean进行装配,找不到则抛出异常。

public class StudentController {     @Resource(type="StudentServer")       private StudentServer studentServer; }

指定了type,则从上下文中找到类似匹配的唯一bean进行装配,找不到或是找到多个,都会抛出异常。

public class StudentController {    @Resource(name="studentServer",type="StudentServer")      private StudentServer studentServer; }public class StudentController {    @Resource(name="studentServer",type="StudentServer")      private StudentServer studentServer; }

同时指定了name和type,则从Spring上下文中找到唯一匹配的bean进行装配,找不到则抛出异常。

以上就是"Spring的@Autowired与@Resource有什么区别"这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注行业资讯频道。

装配 注解 容器 对象 类型 知识 篇文章 上下 上下文 内容 可以通过 名称 多个 时候 来源 示例 组件 不同 很大 相同 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 花魁咖啡 互联网科技企业 上海睿民互联网科技有限公司 河南云网互联网络科技有限公司 互联网的科技 美国互联网保险保险科技 网络科技有限互联网 互联网科技公司有哪些 中化能源互联网科技招聘 受益于互联网科技的高速发展 深圳市优智互联网科技有限公司 互联网金融科技展 互联网科技和法律行业 科技赋能视角下互联网保险发展 恒生互联网科技业指数调整周期 上海钢联属于互联网科技股吗 上海创道互联网络科技有限公司 互联网科技融合创新 互联网与数字科技关系 保山互联网科技靠谱吗 互联网新科技 互联网科技热点资讯 互联网对科技的发展 崇明区互联网教育科技诚信经营 燊美集互联网科技有限公司 玉溪新华互联网科技好不好 工业互联网科技成果转化 唯美互联网科技 唐山双旺合互联网科技产业园 第三届互联网大会安防黑科技
0