@Autowired和@Resource的区别

相同点:

@Autowired和@Resource作用基本相同,都是用于自动装配bean对象。都可以写在字段上,或写在setter方法上。


区别点:


1.出处不同

@Autowired(Spring注解,org.springframework.beans.factory.annotation.Autowired)

@Resource(JAVA注解,javax.annotation.Resource)

后者是JAVA注解,适用范围广,依赖小


2.自动装配策略不同


@Autowired 只能按类型匹配,如果要允许null  值,可以设置它的required属性为false, 如果使用按照名称装配,可使用@Qualifier注解;
@Resource 默认优先名称匹配 具体装配策略如下:
    a. 如果同时指定了name和type,则从Web容器上下文中找到唯一匹配的bean进行装配,找不到则抛出异常 
 b. 如果指定了name,则从上下文中查找名称匹配的bean进行装配,找不到则抛出异常 
 c. 如果指定了type,则从上下文中找到类型匹配的唯一bean进行装配,找不到或者找到多个,都会抛出异常 
 d. 如果既没有指定name,又没有指定type,则将通过反射机制(
当注解标注在字段上,即默认取字段的名称作为bean名称寻找依赖对象,当注解标注在属性的setter方法上,即默认取属性名作为bean名称寻找依赖对象。) 使用 byName 自动注入策略进行装配;如果没有匹配,则 会按照类型装配( 对于字段注释,默认值为字段的类型。对于方法注释,默认值为 JavaBean 属性的类型。),都 找不到则抛出异常

 3.其他区别
    @Autowired 可以允许 null。
    @Resource 可以对类注解

如何选择:个人观点,仅供参考
      前提@Autowired必须有Spring容器,剩下的主要看想byType还是b yName匹配策略了。如果偏向于接口编程,则肯定用@Autowired比较方便,书写简单。如果可能换Web容器,那可能优先@Resource比较好。 其他情况都差不多。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值