工作学习系列一,关于spring的@Autoawared和@Resource

最近在开发中遇到了很多地方利用到了spring来管理容器中的bean的情况。一般情况下,现再流行采用注解的形式进行bean的注入和管理,当然也会用到xml的方式进行bean的配置。

今天就复习一下关于spring的@AutoAwared,@Qualifer和jdk中的@Resource注解

关于spring  @AutoAwared和@Qualifier,以及jdk中的@Resource注解的区别

         在Java代码中可以使用@Resource或者@Autowired注解方式来经行注入。虽然@Resource和@Autowired都可以来完成注入依赖,但它们之间是有区别的。首先来看一下:

 a。@Resource默认是按照名称来装配注入的,只有当找不到与名称匹配的bean才会按照类型来装配注入;(何为按照名称进行装配?我们知道在使用@component,@Service,@Repository以及@Controller注解的形式把bean纳入IOC容器进行管理的时候会在注解里面添加上名称的,这个名称就是所谓的名称,此外在xml中配置的bean中会有id的形式,这个id也可以看做是bean的名称。

 b。@Autowired默认是按照类型装配注入的,如果想按照名称来转配注入,则需要结合@Qualifier一起使用;(不然会报错的)

 c。@Resource注解是又J2EE提供,而@Autowired是由spring提供,故减少系统对spring的依赖建议使用@Resource的方式;

 

@Autowire 默认按照类型装配,默认情况下它要求依赖对象必须存在如果允许为null,可以设置它required属性为false,如果我们想使用按照名称装配,可以结合@Qualifier注解一起使用;

@Resource默认按照名称装配,当找不到与名称匹配的bean才会按照类型装配,可以通过name属性指定,如果没有指定name属 性,当注解标注在字段上,即默认取字段的名称作为bean名称寻找依赖对象,当注解标注在属性的setter方法上,即默认取属性名作为bean名称寻找依赖对象.

注意:如果没有指定name属性,并且按照默认的名称仍然找不到依赖的对象时候,会回退到按照类型装配,但一旦指定了name属性,就只能按照名称装配了.

 

配置的bean中id的作用:bean中id就是名称。等同于类上标注的注解。

 

关于抽象类和接口类型:由于spring是采用反射的机制生成对象并为对象所依赖的属性注入值,而抽象类在反射的这一步就会出错。抽象类是不能创建实例的。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值