@Autowired 与 @Resource 区别

2019-06-21  本文已影响0人  SuperMarry

@Autowired 与 @Resource 区别
两者的共同点:都是用来装配Bean的注解。都可以写在字段上,或写在setter方法上。

区别:
1.@Autowired注解是spring提供的注解,是按照类型(byType)装配依赖对象,默认情况下它所要求依赖对象必须存在,如果你允许null值,可以设置它的required属性为false。

在这里有个点要注意,假设我们在controller中注入的只是一个接口,但是当我们调用接口的方法seckillService.getSeckillList()时,spring会帮我们自动装载注册在spring容器中的seckillService的接口实现类,即当我们调用接口的方法时真正调用的也是接口实现类的方法。
另外,当我们需要按照名称(byName)来装配时,可以结合@Qualifier注解一起使用。
eg:@Autowired @Qualifier("seckillService")

2.@Resource是 J2EE 提供的注解。Resource有两个属性,name和type,resource会把name作为bean的名称,type作为bean的类型。因为其有两个属性所以装载bean时就分为好几种情况了。

推荐使用@Resource,减少与spring的耦合

上一篇 下一篇

猜你喜欢

热点阅读