记录下对@Autowired注解的理解

1.@Autowired注解通常用于自动装配依赖关系,但被注入的依赖必须是Spring容器中管理的Bean。

2.按类型自动装配这是和@Resource(按名称)注解的本质区别

public interface Animal {
    void eat();
}

@Component
public class Dog implements Animal {
    @Override
    public void eat() {
        System.out.println("Dog is eating");
    }
}

@Component
public class Cat implements Animal {
    @Override
    public void eat() {
        System.out.println("Cat is eating");
    }
}

@Component
public class AnimalService {
    @Autowired
    private Animal animal;
    
    public void feedAnimal() {
        animal.eat();
    }
}
在上面的例子中,AnimalService类中使用@Autowired注解自动装配Animal类型的依赖对象。由于容器中存在两个实现Animal接口的bean(Dog和Cat),Spring会抛出异常,因为无法确定要注入哪个bean。
@Component("dog")
public class Dog implements Animal {
    @Override
    public void eat() {
        System.out.println("Dog is eating");
    }
}

@Component("cat")
public class Cat implements Animal {
    @Override
    public void eat() {
        System.out.println("Cat is eating");
    }
}

@Component
public class AnimalService {
    @Resource(name = "cat")
    private Animal animal;
    
    public void feedAnimal() {
        animal.eat();
    }
}
在上面的例子中,AnimalService类中使用@Resource注解根据名称自动装配名为"cat"的bean实例。因此,Spring会自动注入Cat实例作为Animal类型的依赖对象

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值