@Autowired与@Resource的区别(一)

本文探讨了在Spring框架中,@Autowired和@Resource注解在依赖注入时的不同用法。通过一个简单的Human接口及其两个实现类ManImpl和WomanImpl的例子,展示了当存在多个候选bean时,@Resource按名称注入,需指定name属性,而@Autowired按类型注入,遇到冲突时需配合@Qualifier注解明确指定bean名称。
摘要由CSDN通过智能技术生成

在spring的使用中,控制反转(IOC),依赖注入(DI)被频繁的使用着。实现自动注入最常用的两个注解@Autowired、 @Resource它们的不同点又在哪里呢?我们通过不同的场景对于它们使用过程中的不同意义了解后再进行原理上的理解。

首先看一个网上简单的例子:
1. 一个简单的Human接口

public interface Human {
    public void speak();
    public void walk();
}

2.两个Human的实现类 ManImpl, WomanImpl

public class ManImpl implements Human {
   

    @Override
    public void speak() {
        System.out.println(" man speaking ");
    }

    @Override
    public void walk() {
        System.out.println(" man walking ");
    }
}
public class WomanImpl implements Human {
   
    @Override
    public void speak() {
        System.out.println("woman speaking");
    }

    @Override
    public void walk() {
        System.out.println("woman walking");
    }
}
  1. 一个主调方法
@Service
public class SequenceServiceImpl{
   

    @Resource
    private Human human;
}

启动项目后产生报错信息:

org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type [com.dotwin.client.api.Human] is defined: expected single matching bean but found 2: manImpl,womanImpl
    org.springframework.beans.factory.config.DependencyDescriptor.resolveNotUnique(DependencyDescriptor.java:172)
    org.springframework
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值