@Autowired和@Resource

@Autowired和@Resource是Java中两种依赖注入注解,用于将Bean注入到另一个Bean中。

@Autowired:@Autowired是Spring中的依赖注入注解,用于自动装配Bean。
可以将@Autowired注解标注在类、属性、构造函数、方法等地方,Spring会自动匹配并注入对应的Bean。
如果有多个匹配的Bean,则会抛出异常,需要使用@Qualifier来指定具体的Bean。

@Resource:@Resource是Java EE中的依赖注入注解,用于注入指定名称或类型的Bean。
可以将@Resource注解标注在属性或setter方法上,
Java EE容器会根据指定的名称或类型查找对应的Bean,并注入到属性中。如果没有找到对应的Bean,则会抛出异常。

需要注意的是,@Autowired和@Resource的注入方式和注入规则略有不同。
@Autowired是按照类型匹配注入,如果有多个匹配的Bean,则需要使用@Qualifier指定具体的Bean;@Resource是按照名称或类型匹配注入,可以指定Bean的名称或类型,
如果没有找到对应的Bean,则会抛出异常。
在Spring中,建议使用@Autowired注解来完成自动装配操作,
因为@Autowired注解更加灵活,支持更多的注入方式和注入规则,而且是Spring框架内置的注解
public interface Animal {
    void sayHello();
}

@Component
public class Dog implements Animal {
    @Override
    public void sayHello() {
        System.out.println("Hello, I am a dog!");
    }
}

@Component
public class Cat implements Animal {
    @Override
    public void sayHello() {
        System.out.println("Hello, I am a cat!");
    }
}


@Component
public class AnimalService {
    @Autowired
    private Animal dog;
    @Resource(name = "cat")
    private Animal cat;

    public void sayHello() {
        dog.sayHello();
        cat.sayHello();
    }
}


@SpringBootApplication
public class MyApp {
    public static void main(String[] args) {
        ApplicationContext context = SpringApplication.run(MyApp.class, args);
        AnimalService animalService = context.getBean(AnimalService.class);
        animalService.sayHello();
    }
}
Hello, I am a dog!
Hello, I am a cat!
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值