关于@Autowired和@Resource的详细区别(面试题)

关于@Autowired和@Resource的区别(面试题)

共同点:使用这2种注解都可以实现自动装配!

区别

@Resource注解是javax包中的注解,它是优先byName来装配的,如果byName无法装配,则会自动尝试byType装配,在byType装配时,要求匹配类型的对象必须有且仅有1个,如果无法装配,则会报告错误

@Autowired注解是Spring框架中的注解,它是优先byType来装配的,但是,这个过程中,只会检索匹配类型的对象的数量,并不直接装配,如果找到的对象的数量是0个,则直接报错,如果找到的对象的数量是1个,则直接装配,如果找到的对象的数量(类型)超过1个(2个或更多个),则会尝试byName来装配,如果byName装配失败,则报错。(虽然老师进行试验不能直接看出来,但是这个答案的依据是来自Spring的官方文档,是正确的。)

面试时,要知道区别后应该怎么用?

在实际开发项目时,绝大部分情况下,需要装配的对象都是有且仅有1个的,并且命名都是规范的,所以,无论byTypebyName都是可以装配成功,就不必在乎装配方式和做法,在以上2个注解的选取方面,通常也没有明确的要求

补充

@Autowired为Spring提供的注解,需要导入包:

org.springframework.beans.factory.annotation.Autowired。

@Resource注解由J2EE提供,需要导入包:

javax.annotation.Resource
posted @ 2022-02-15 15:10  Charles博客  阅读(115)  评论(0编辑  收藏  举报