@Autowired和@Resource区别?


@Autowired 和 @Resource 都是 Spring/Spring Boot 项目中,用来进行依赖注入的注解。它们都提供了将依赖对象注入到当前对象的功能,但二者却有以下不同:

来源不同:@Autowired 和 @Resource 来自不同的“父类”,其中 @Autowired 是 Spring 定义的注解,而 @Resource 是 Java 定义的注解,它来自于 JSR-250(Java 250 规范提案);
依赖查找的顺序不同:@Autowired 是先根据类型(byType)查找,如果存在多个 Bean 再根据名称(byName)进行查找;而 @Resource 是先根据名称查找,如果(根据名称)查找不到,再根据类型进行查找;
支持的参数不同:@Autowired 只支持设置一个 required 的参数,而 @Resource 支持更多的参数设置,@Resource 支持 7 个参数的设置;
依赖注入的支持不同:@Autowired 支持属性注入、构造方法注入和 Setter 注入,而 @Resource 只支持属性注入和 Setter 注入;
编译器 IDEA 的提示不同:当使用 IDEA 专业版注入 Mapper 对象时,使用 @Autowired 编译器会提示报错信息(虽然报错但不印象程序的执行);而 @Resource 则不会报错。

posted @ 2024-03-18 18:44  初仰  阅读(4)  评论(0)    收藏  举报