@Autowired和@Resource的区别

  1. @Autowired与@Resource都可以用来装配bean. 都可以写在字段上,或写在setter方法上
  2. @Autowired详解:
    默认按类型进行装配(这个注解是属于spring的,所以类上需要写@Component/@Controller/@Service/@Repository),默认情况下必须要求依赖对象必须存在,如果要允许null值,可以设置它的required属性为false,例如:@Autowired(required=false)
    如果只使用一个@Autowired,在spring项目中,@Autowired注解下面的类名就对应bean标签中的class对应的类;在springboot项目中,@Autowired注解下面的类名就对应方法返回值的类型;无论是spring还是springboot,@Autowired下面的类名后面的属性名可以 随意写,不用写成bean的id或者是对应的@Bean注解下面的方法名
    如果同一个class类注册的bean有多种,那我们就需要结合@Qualifier注解进行使用,然后按照名称进行装配,如下Java代码:
    @Autowired
    @Qualifier(“baseDao”)
    private BaseDao baseDao;
    如果使用了@Qualifier ,在spring项目中,@Qualifier后面的name的值对应bean标签中的id的值;在springboot项目中,@Qualifier后面的name的值对应方法名称;如果按照这样做的话,@Qualifier下面的类名后面的名称,例如我们上面的baseDao不必和spring项目中bean标签中id的值,以及springboot项目中的方法名称一致
  3. @Resource详解:
    @Resource 是JDK1.6支持的注解,默认按照名称进行装配,名称可以通过name属性进行指定,例如:@Resource(name="restHighLevelClient"),如果name属性一旦指定,就只会按照名称进行装配,找不到对应名称的话就报错
    如果通过name属性进行指定,在spring项目中,@Resource注解后面的name属性的值对应的就是bean标签的id;在springboot项目中,@Resource注解后面的name属性的值对应的就是方法的方法名;无论是spring项目还是springboot项目,@Resource注解下面的类名后面的名称随意写
    如果没有指定name属性,当注解写在字段上时,默认取类名的首字母小写,类名的其他部分依然按照驼峰命名法作为名称(“拿上面所说的名称”就指代该名称)
    如果没有指定name属性,在spring项目中,拿上面所说的名称找到对应的bean标签的id;在springboot项目中,拿上面所说的名称找到对应的方法名称;无论是spring项目还是springboot项目,@Resource注解下面的类名后面的名称随意写
    如果没有指定name属性并且找不到与拿上面所说的名称对应的spring中的bean标签的id值或者springboot显示中的方法名称,我们就需要按照类型进行装配,如果是这种情况,那你就按照 2. @Autowired详解:中的第一种情况处理,但是无论是spring项目还是springboot项目,@Resource注解下面的类名后面的名称随意写
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值