相同点:

@AutoWired和@Resource注解都是从Spring容器中取出相应的bean对象,自动装配。

不同点:

@AutoWired:
默认根据类型进行自动装配,依赖的对象必须存在,如果允许为null值,需要加required=false,即@AutoWired(required=false);若要通过名称装配可以配合@Qualifier注解;

@Resource:
默认根据名称进行自动装配,由nane属性指定名称,代码如下:

//定义一个Animal接口
public interface AnimalService {//定义一个eat的抽象方法,由子类去重写void eat();
}
//定义Cat类实现AnimalService接口
@Service
public class CatServiceImpl implements AnimalService {//重写eat方法@Overridepublic void eat() {System.out.println("猫喜欢吃鱼");}
}
//定义Dog类实现AnimalService接口
@Service
public class DogServiceImpl  implements AnimalService{//重写eat方法@Overridepublic void eat() {System.out.println("狗喜欢吃骨头");}
}
//单元测试
@SpringBootTest
public class DemoApplicationTests {/*** 此处若只写@AutoWired注解,会报错,因为AnimalService接口有两个实现类,默认根据类型匹配会冲突,因此需要配合@Qualifier注解使用名称定位到具体bean,注意value属性首字母要小写,前提是@Service注解没有配置value属性,否则要与其保持一致。*/@Autowired@Qualifier(value = "catServiceImpl")//@Resource(name="catServiceImpl")也可使用该注解代替上面两个注解,效果完全一样。private AnimalService animalService;@Testvoid contextLoads() {animalService.eat();}
}

看下执行效果:

2020-06-05 17:05:57.531  INFO 14521 --- [           main] com.example.demo.DemoApplicationTests    : Starting DemoApplicationTests on FinupdeMacBook-Pro.local with PID 14521 (started by finup in /Users/configSoftWare/IdeaProjects/demo)
2020-06-05 17:05:57.533  INFO 14521 --- [           main] com.example.demo.DemoApplicationTests    : No active profile set, falling back to default profiles: default
Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.
2020-06-05 17:05:59.479  INFO 14521 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'
2020-06-05 17:05:59.576  INFO 14521 --- [           main] o.s.b.a.w.s.WelcomePageHandlerMapping    : Adding welcome page template: index
2020-06-05 17:05:59.865  INFO 14521 --- [           main] com.example.demo.DemoApplicationTests    : Started DemoApplicationTests in 2.633 seconds (JVM running for 3.702)猫喜欢吃鱼

原博文链接:http://www.54gwz.cn/article/1591346836

@AutoWired和@Resource注解异同分析相关推荐

  1. @Autowired和@Resource注解的区别?

    谈到Spring的注解,@Autowired和@resource这两个注解不得不提.@Autowired与@Resource都可以用来装配bean. 都可以写在字段上,或写在setter方法上 那@A ...

  2. Spring系列(十):@Autowired 和@Resource注解用法介绍

    今天给大家分享Spring属性注入的注解@Autowired 和@Resource介,希望对大家能有所帮助! 一.@Autowired 注解 1.1 介绍 @Autowired注解默认按照类型容器中找 ...

  3. Springboot中@autowired和@resource注解的区别

    @Autowired @Autowired是Spring提供的,默认按照byType 注入,也就是按bean的类型来传入.如果需要指定名字,那么需要使@Qualifier("这是bean的名 ...

  4. Spring下的@Inject、@Autowired、@Resource注解区别(转)

    1.@Inject javax.inject JSR330 (Dependency Injection for Java) 这是JSR330中的规范,通过AutowiredAnnotationBean ...

  5. Spring中@Autowired和@Resource的区别

    一.定义 @Autowired 对类成员变量.方法及构造函数进行标注,完成自动装配的工作. @Resource 在语义上被定义为通过其唯一的名称来标识特定的目标组件,其中声明的类型与匹配过程无关. 如 ...

  6. @Autowired、@Resource

    @Autowired 通过 @Autowired的使用来消除 set ,get方法 - Spring 2.5 JPA hibernate 使用方法的点滴整理 我们编写spring 框架的代码时候.一直 ...

  7. (转)用@Resource注解完成属性装配

    http://blog.csdn.net/yerenyuan_pku/article/details/52858878 前面我们讲过spring的依赖注入有两种方式: 使用构造器注入. 使用属性set ...

  8. @Autowired 和 @Resource 的区别(为什么更推荐使用@Resource ?)

    @Autowired 和 @Resource 的有什么区别? 相同点 不同点 @Autowired @Resource @Resource的装配顺序 要是实在不理解可以看看这个视频 !!! 为什么更推 ...

  9. 详述 @Service 和 @Resource 注解的区别

    1 前言 在我们使用 Spring 框架的时候,注解是"不可或缺"的一部分,它帮我们脱离了配置繁琐的 XML 文件的工作,但有一点却需要我们自己去把握,那就是"3何&qu ...

最新文章

  1. Hyperledger Fabric 管道(2) 管道的操作
  2. mysql物流管理系统_wuliuwang 物流信息管理系统 ssh2 mysql(Logistics Information Management System) - 下载 - 搜珍网...
  3. 第三次学JAVA再学不好就吃翔(part117)--单例设计模式
  4. php授权验证系统 c,OAuth 2.0 授权码认证
  5. python对excel数据更改_利用python对excel中一列的时间数据更改格式代码示例
  6. python爬虫之js链接跳转抓取_Python爬虫获取页面所有URL链接过程详解
  7. C语言里printf函数格式控制符的完整格式
  8. 基于FPGA的三人表决器设计
  9. mysql清空数据库_mysql命令行快速清空数据库的方法
  10. 极智开发 | UmiJS 快速上手
  11. 傅里叶变换中的假频**
  12. teraterm linux环境,linux ssh telnet TeraTerm终端中文显示乱码解决方法
  13. 网站跳出率过高的原因有哪些?怎么解决?
  14. python基础学习总结
  15. 如何用尺规作图画圆的切线_尺规作图过圆外一点作圆的切线的四种方法
  16. 如何同时或者按顺序间隔启动多个程序
  17. 外贸人如何快速学好英语
  18. linux中strlen的用法,实现strlen()函数,strcmp()函数 const知识点
  19. 音频节奏检测(Onset Detection)
  20. 入职B站一年,被裁员了,我思考了哪些?

热门文章

  1. swoole TCP UDP server
  2. yii2 checkboxlist使用及数据入库
  3. 云技术概况:云计算的优点/特点/类型/服务模式
  4. PostgreSQL系统表和视图
  5. 单元测试框架之unittest(一)
  6. ZOJ 1610 Count the Colors 【线段树】
  7. iOS 最新发布App Store流程
  8. 网上书店 整体需求分析
  9. 7.2.3 使用RenderTargetBitmap类生成图片
  10. android:intent flags