Spring中@Autowired和@Resource的区别

发布时间 2023-10-07 23:00:03作者: jihite

说明

@Autowired这个注解呢,是由Spring提供的;@Resource由JDK提供的

区别

①注解内参数不同

@Autowired只包含一个required参数,默认为true,表示开启自动注入

@Resource 包含七个参数,其中最重要的两个是name和type

②装配方式默认值不同

@Autowired默认按type自动装配

@Resource默认按name自动装配

③注解应用范围不同

@Autowired能够用在构造方法、成员变量、方法参数、注解上

@Resource能用在类、成员变量和方法参数上

④出处不同

@Autowired是Spring定义的注解

@Resource定义在JDK中

所以@Autowired只能在Spring框架下使用,而@Resource则可以与其他框架一起使用

⑤加载顺序不同

@Autowired默认先按byType进行匹配,如果发现找到多个bean,则又按照byName方式进行匹配,如果还有多个,则报出异常。

@Resource的装载顺序分为四种情况

参考

https://zhuanlan.zhihu.com/p/522095455