关于@Autowired和@Resource的详细区别(面试题)
关于@Autowired和@Resource的区别(面试题)
共同点:使用这2种注解都可以实现自动装配!
区别:
@Resource
注解是javax
包中的注解,它是优先byName
来装配的,如果byName
无法装配,则会自动尝试byType
装配,在byType
装配时,要求匹配类型的对象必须有且仅有1个,如果无法装配,则会报告错误。
@Autowired
注解是Spring框架中的注解,它是优先byType
来装配的,但是,这个过程中,只会检索匹配类型的对象的数量,并不直接装配,如果找到的对象的数量是0个,则直接报错,如果找到的对象的数量是1个,则直接装配,如果找到的对象的数量(类型)超过1个(2个或更多个),则会尝试byName
来装配,如果byName
装配失败,则报错。(虽然老师进行试验不能直接看出来,但是这个答案的依据是来自Spring的官方文档,是正确的。)
面试时,要知道区别后应该怎么用?
在实际开发项目时,绝大部分情况下,需要装配的对象都是有且仅有1个的,并且命名都是规范的,所以,无论byType
或byName
都是可以装配成功,就不必在乎装配方式和做法,在以上2个注解的选取方面,通常也没有明确的要求!
补充:
@Autowired为Spring提供的注解,需要导入包:
org.springframework.beans.factory.annotation.Autowired。
@Resource注解由J2EE提供,需要导入包:
javax.annotation.Resource
分类:
Spring
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效