@Autowired注解注入细节及与@Resource的区别

1、@Autowired的作用

@AutoWired 可以作用于:构造器、方法、参数、属性
上,在spring加载的时候会将带有@autowired注解的内容进行识别,并自动装配

2、@autowired 与 @Resource的区别

使用了一段时间的 @autowired 自动装载之后,偶尔会看到在一些地方使用了 @Resource 注解进行自动装载,那么 @autowired 与 @Resource 有什么区别,我们在使用的时候应该如何进行选择呢?

相同点:
我们已知道,两者都能完成自动装载的任务,都可以写在属性(字段)上,也可以写在 setter 上

不同点:

  1. 来源不一样
    @Autowired 由Spring提供
    @Resource 由J2EE 提供
  2. 注入方式不一样
    @Autowired 默认 ByType (按类型注入),若需按名字,则配合使用@Qualifier,默认依赖对象必须存在,若允许不存在,需指定 required = false
    @Resource 默认 ByName (按名字注入), 若找不到对应的bean,会继续按类型去找, (但一旦指定了name,那么只会按名字去找 bean)
  3. 限制不一样
    @Autowired 使用属性 (字段) 注入的话,有的编译器要警告,建议使用构造方法注入;
    @Resource 则不会,然而,@Resource 的限制很多,不能使用构造方法注入,如果使用属性(字段)注入的话,则容易出现 nullpointerException. 如果使用setter方法注入,则属性不能设置为 final

3、@Autowired注解注入方式选择

在这里插入图片描述
由此可知,@Autowired相较@Resource 更加灵活,但是当不需要@Autowired的灵活性的时候,推荐使用@Resource,这样可以减少与Spirng 的耦合,使得代码更加优雅

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值