注解@Autowired和@Resource的区别

两个注解都是Spring生态环境中实现bean的依赖注入。

Autowired是spring提供的一个注解,默认根据类型来实现bean的注入。autowired里面有一个required的属性,它的默认值为true。表示强制要求bean实例的一个注入。

在应用启动的时候,如果ioc容器不存在对应类型的Bean,启动时候就会报错。如果不希望自动注入可以把属性设置为false。

如果在spring ioc里面存在多个相同类型的Bean实例。由于Autowired的注解根据类型注入bean的实例的,会报错(原本只有一个单实例bean,提示注入多个导致失败),针对这个问题可以@Primary或者

@primary表示主要的bean,当存在多个相同类型的Bean的时候,优先使用声明了@Primary注解的一个Bean。

而@Qualifier注解类似于条件筛选,它可以根据bean的名字去找到需要装配的目标Bean。

@Resource是jdk里面提供的注解,只是spring提供了这种注解功能的一个知识,它的使用方式和autowired完全相同。

最大的差异化在于@Resource支持byName和byType两种注入方式,如果使用name会根据bean的名字去进行依赖注入,如果使用typespring会根据类型进行依赖注入。假设两个属性都没有配置的情况下,会现根据定义的属性名字去匹配,如果没有匹配成功再根据类型再匹配,如果两个都没有匹配到的话,就会报错。

总结

autowired是根据类型来匹配的,是spring里面定义的;resource是根据name或者type匹配,是jdk定义的,只是spring对其进行支持。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值