Spring框架中 @Autowired 和 @Resource 注解的区别

发布时间 - 2026-01-10 23:25:14    点击率:

Spring框架中 @Autowired 和 @Resource 注解的区别

在 spring 框架中,除了使用其特有的注解外,使用基于 JSR-250 的注解,它包括 @PostConstruct, @PreDestroy 和 @Resource 注释。

  首先,咱们简单了解 @PostConstruct 和 @PreDestroy 注释:

  为了定义一个 bean 的安装和卸载,我们可以使用 init-method 和 destroy-method 参数简单的声明一下 ,其中 init-method 属性指定了一个方法,该方法在 bean 的实例化阶段会立即被调用;同样地,destroy-method 指定了一个方法,该方法只在一个 bean 从容器中删除之前被调用。

  因此,咱们可以使用 @PostConstruct 注解作为初始化回调函数的一个替代,使用 @PreDestroy 注解作为销毁回调函数的一个替代。

  接下来,咱们着重讲解一下 @Resource,以及其与 Spring 特有的 @Autowired注解的区别。

  注解 @Resource 的作用相当于 @Autowired,只不过 @Autowired 按 byType 自动注入,而 @Resource 则默认按 byName 自动注入。@Resource 有两个属性是比较重要的,分别是 name 和 type,Spring 将 @Resource 注解的 name 属性解析为 bean 的名字,而 type 属性则解析为 bean 的类型。因此,如果使用 name 属性,则使用 byName 的自动注入策略,而使用 type 属性时则使用 byType 自动注入策略。如果既不指定 name 也不指定 type 属性,这时将通过反射机制使用 byName 自动注入策略。

  注解 @Resource 的装配顺序:

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

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

  3. 如果指定了 type,则从上下文中找到类型匹配的唯一 bean 进行装配,找不到或者找到多个,都会抛出异常;

  4. 如果既没有指定 name,又没有指定 type,则自动按照 byName 方式进行装配;如果没有匹配,则回退为一个原始类型进行匹配,如果匹配成功,则进行自动装配。

          感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# @Autowired  #   # @Resource  # 注解的区别  # Spring  # 注解  # 详解Java的Spring框架中的注解的用法  # 详解Spring框架注解扫描开启之配置细节  # spring框架下@value注解属性static无法获取值问题  # Spring框架学习常用注解汇总  # Spring框架基于注解开发CRUD详解  # Spring Boot框架中的@Conditional注解示例详解  # Spring框架中的重要注解及其应用代码实例  # 找不到  # 抛出  # 可以使用  # 特有的  # 回调  # 也不  # 中找到  # 多个  # 希望能  # 如果没有  # 只在  # 谢谢大家  # 又没  # 既不  # 时则  # 器中  # 只不过  # 有两个  # init  # bean 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何快速搭建支持数据库操作的智能建站平台?  JavaScript模板引擎Template.js使用详解  微信公众帐号开发教程之图文消息全攻略  智能起名网站制作软件有哪些,制作logo的软件?  b2c电商网站制作流程,b2c水平综合的电商平台?  Laravel如何使用Collections进行数据处理?(实用方法示例)  如何用y主机助手快速搭建网站?  Laravel如何发送邮件和通知_Laravel邮件与通知系统发送步骤  ,在苏州找工作,上哪个网站比较好?  小米17系列还有一款新机?主打6.9英寸大直屏和旗舰级影像  Python文件操作最佳实践_稳定性说明【指导】  Python进程池调度策略_任务分发说明【指导】  宙斯浏览器文件分类查看教程 快速筛选视频文档与图片方法  python中快速进行多个字符替换的方法小结  浅谈javascript alert和confirm的美化  php中::能调用final静态方法吗_final修饰静态方法调用规则【解答】  夸克浏览器网页跳转延迟怎么办 夸克浏览器跳转优化  JavaScript如何实现倒计时_时间函数如何精确控制  使用PHP下载CSS文件中的所有图片【几行代码即可实现】  百度输入法全感官ai怎么关 百度输入法全感官皮肤关闭  Android使用GridView实现日历的简单功能  Laravel如何将应用部署到生产服务器_Laravel生产环境部署流程  INTERNET浏览器怎样恢复关闭标签页_INTERNET浏览器标签恢复快捷键与方法【指南】  如何在万网主机上快速搭建网站?  品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?  详解Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点  JS中页面与页面之间超链接跳转中文乱码问题的解决办法  网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?  济南网站建设制作公司,室内设计网站一般都有哪些功能?  千库网官网入口推荐 千库网设计创意平台入口  Laravel怎么导出Excel文件_Laravel Excel插件使用教程  如何在橙子建站中快速调整背景颜色?  Laravel如何使用Telescope进行调试?(安装和使用教程)  Laravel策略(Policy)如何控制权限_Laravel Gates与Policies实现用户授权  高防服务器如何保障网站安全无虞?  网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?  BootStrap整体框架之基础布局组件  如何续费美橙建站之星域名及服务?  网站制作企业,网站的banner和导航栏是指什么?  Windows家庭版如何开启组策略(gpedit.msc)?(安装方法)  html如何与html链接_实现多个HTML页面互相链接【互相】  Laravel辅助函数有哪些_Laravel Helpers常用助手函数大全  Laravel如何配置和使用缓存?(Redis代码示例)  Laravel中的Facade(门面)到底是什么原理  阿里云高弹*务器配置方案|支持分布式架构与多节点部署  Laravel如何实现登录错误次数限制_Laravel自带LoginThrottles限流配置【方法】  canvas 画布在主流浏览器中的尺寸限制详细介绍  制作电商网页,电商供应链怎么做?  如何在阿里云高效完成企业建站全流程?  Laravel怎么实现一对多关联查询_Laravel Eloquent模型关系定义与预加载【实战】