当前位置: 首页 > news >正文

@Resource 和 @Autowired区别是什么?

@Resource@Autowired 时,它们都是用于依赖注入的注解,但它们有一些不同之处。

  1. 来源:

    • @Resource 是Java EE标准的一部分,而且是JDK提供的,不属于Spring框架的注解。它的使用范围更广泛,不仅可以用在Spring中,还可以用在其他Java EE容器中。
    • @Autowired 是Spring框架的注解,专门用于Spring容器,提供了更多的功能和选项。
  2. 匹配规则:

    • @Resource 默认按照组件名称进行匹配,可以通过 name 属性指定名称。如果没有指定 name,它会按照类型匹配。
    • @Autowired 默认按照类型进行匹配。如果有多个类型匹配,它会尝试按照名称进行匹配(通过 @Qualifier 注解),如果还不能解决,就会报错。
  3. 可选性:

    • @Resource 有一个 required 属性,默认为 true,表示被注入的Bean必须存在。如果设置为 false,没有匹配的Bean时,注入的字段会被赋值为 null
    • @Autowired 默认要求被注入的Bean必须存在,如果找不到匹配的Bean,会抛出异常。但你可以将 @Autowiredrequired 属性设置为 false,使得注入字段可以为 null

在实际使用中,一般来说,@Autowired 是Spring推荐的注解,因为它更强大、更灵活,并且与Spring框架更紧密地集成。如果你在Spring项目中使用,通常会选择 @Autowired。而 @Resource 更适合那些需要在不同的Java EE容器中移植的代码。

http://www.lryc.cn/news/263404.html

相关文章:

  • K8S的一个pod中运行多个容器
  • 《每天一分钟学习C语言·一》
  • zookeeper:启动后占用8080端口问题解决
  • 深度学习中的高斯分布
  • 【已解决】Atlas 导入 Hive 元数据,执行 import-hive.sh 报错
  • 在 Windows PC 上轻松下载并安装 FFmpeg
  • 21.Servlet 技术
  • 【Hive】——DDL(PARTITION)
  • SpringBoot 源码解析4:事件监听器
  • 使用 FastAPI 和 Vue.js 实现前后端分离
  • 算法基础之SPFA判断负环
  • 一些常用的Linux命令及其简要说明(持续更新)
  • 开发企业展示小程序的关键步骤和技巧
  • Python-Selenium-使用 pywinauto 实现 Input 上传文件
  • Go语言运行时与自家平台对比后认识
  • leetcode 450. 删除二叉搜索树中的节点
  • 小红书可观测 Metrics 架构演进,如何实现数十倍性能提升?
  • selenium学习
  • 前端开发新趋势:Web3、区块链和虚拟现实
  • 如何安装运行Wagtail并结合cpolar内网穿透实现公网访问网站界面
  • 【>D:\10\Debug\RCa00828(34): fatal error RC1022: expected ‘#endif‘】
  • 使用vite搭建项目时,在启动vite后,浏览器显示页面:找不到localhost的网页
  • libp2p 快速开始
  • 【数据结构】——排序算法简答题模板
  • vue3.0基础
  • Kafka本地安装⭐️(Windows)并测试生产消息以及消费消息的可用性
  • 生产环境_Spark解析JSON字符串并插入到MySQL数据库
  • WEB渗透—PHP反序列化(四)
  • LVS-DR模式部署
  • Oracle的学习心得和知识总结(三十)| OLTP 应用程序的合成工作负载生成器Lauca论文翻译及学习