首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
SAAS
ToB门户
了解全球最新的ToB事件
论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
微博
Follow
记录
Doing
博客
Blog
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
排行榜
Ranklist
相册
Album
应用中心
qidao123.com ToB IT社区-企服评测·应用市场
»
论坛
›
数据库
›
分布式数据库
›
Spring 中的 @Autowired 和 @Resource
返回列表
发新帖
Spring 中的 @Autowired 和 @Resource
[复制链接]
发表于 2025-10-1 10:25:07
|
显示全部楼层
|
阅读模式
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
×
🧩 一、@Autowired 和 @Resource 的根本作用
注解泉源作用@AutowiredSpring 提供(org.springframework.beans.factory.annotation.Autowired)
按范例
自动注入@ResourceJDK 提供(javax.annotation.Resource)
默认按名称
注入,找不到再按范例
🚦 二、焦点区别详解
对比项@Autowired@Resource注解泉源Spring 框架JDK(JSR-250 规范)默认注入方式按
范例
注入(byType)按
名称
注入(byName)是否可选可以共同 @Autowired(required = false) 设置为可选默认必须有该 Bean是否支持构造器✅ 支持构造器注入❌ 不支持构造器注入是否支持 @Qualifier✅ 支持,用于指定具体 Bean 名称❌ 不支持 @Qualifier(直接用 name)Spring 保举✅ 是可以用但不保举(除非兼容旧项目)
🔍 三、举例对比
✅ 1. 利用 @Autowired + @Qualifier(保举方式)
@Component
public class MyService {
@Autowired
@Qualifier("userDaoImpl1")
private UserDao userDao;
}
复制
代码
Spring 会按范例找,然后用 @Qualifier 准确到 Bean 名称。
✅ 2. 利用 @Resource
@Component
public class MyService {
@Resource(name = "userDaoImpl1")
private UserDao userDao;
}
复制
代码
Spring 会直接按照 name = "userDaoImpl1" 去找 Bean。
✅ 3. 构造器注入(只能用 @Autowired)
@Component
public class MyService {
private final UserDao userDao;
@Autowired
public MyService(UserDao userDao) {
this.userDao = userDao;
}
}
复制
代码
💣 四、常见坑点
1. 多个实现类时,不指定名称会报错
public interface UserDao {}
@Component("userDaoImpl1") class UserDaoImpl1 implements UserDao {}
@Component("userDaoImpl2") class UserDaoImpl2 implements UserDao {}
复制代码
注入时:
@Autowired // ❌ 报错:有两个实现不知道选哪个
private UserDao userDao;
复制代码
✅ 用 @Qualifier 或 @Primary 来指定
2. @Resource 默认按名称,字段名要划一!
@Resource
private UserDao userDaoImpl1; // ✅ 会去找名字叫 "userDaoImpl1" 的 Bean
复制代码
🧠 五、一句话总结
@Autowired 是 Spring 原生保举,默认按范例注入,共同 @Qualifier 利用最机动;
@Resource 是 JDK 尺度注解,默认按名称,得当兼容旧体系,但不如 @Autowired 强大。
✅
现实开发发起:
Spring Boot 项目中:
优先利用 @Autowired + 构造器注入
多实现类时:
利用 @Qualifier 或 @Primary 明确指定
回复
使用道具
举报
返回列表
浏览过的版块
DevOps与敏捷开发
Oracle
前端开发
后端开发
数据仓库与分析
区块链
云原生
移动端开发
SQL-Server
万有斥力
+ 我要发帖
登录后关闭弹窗
登录参与点评抽奖 加入IT实名职场社区
去登录
微信订阅号
微信服务号
微信客服(加群)
H5
小程序
快速回复
返回顶部
返回列表