前言:平常使用这个两个注解的时候就是相当然的使用,没有去具体比价两者的区别,在网上查阅了资料,加自己测试后,记录一下。

首先,这个两个注解都是用来完成组件的装配的,即利用依赖注入(DI),完成对ioc容器当中各个组件之间依赖的装配赋值

1.@Autowire

@Autowire
Employee employee;

这是spring提供的一个注解,,默认是按照类型装配(by-type),要求容器中一定要有这个类型的对象,如果没有将会报错,抛出异常。也可以通过设置可以@Autowired(required = false),来告诉容器,如果没有,可以不注入。

  • 当容器中有多个相同类型的对象,会报错,可以通过@Qualifier("beanname"),来指定装配哪个对象的id。或者用@Primay 如下图所示:
 @Qualifier(value = "employee1")@AutowiredEmployee employee;

1.@Resource

@Resource
Employee employee;

@Resource注解是属于J2EE的一个注解,他可以设置 by-name 和by-type来进行自动装配。

  • 当设置了 nametype 即:@Resource(name = "employee", type = "Employee.class"),根据设置的条件到ioc中注入唯一的 对象
  • 当只设置了name,则按照name,装配,如果没有那么抛出异常。
  • 当只设置了type,那么按照类型装配,如果ioc容器当中存在多个,或不存在,抛出异常。
  • 如果nametype都没有指定,那么先按by-name查找,(如果 @Autowire注解标注在对象上 by-name查找的值 是对象的字段名,在方法上,则是参数的名),如果by-name 没查找到,那么就进行 by-type查找。如果都没查找到,那么抛出异常。

总结:

  • @Autowire通过by-type装配,如果有多个,可以通过@Qualifier指定。 (属于spring的注解)
  • @Resource,可以by-type ,也可以by-name,如果指定了 则按照指定装配,都没指定 先by-name 后by-type (属于J2EE中注解)

@Autowire与@Resource用法以及它们的区别相关推荐

  1. @Autowire与@Resource用法

    1.0 spring的配置文件 spring-context.xml <?xml version="1.0" encoding="UTF-8"?> ...

  2. 一次性讲清 Spring 常用注解 @Bean 、 @Component 、@Autowire、@Resource 的区别, 你知道吗?

    本文打算介绍几个不太容易说出其区别,或者用途的 Spring 注解,比如 @Component 与 @Bean 的比较,@ControllerAdvice 是如何处理自定义异常的等等. Spring ...

  3. @Autowire和@Resource区别

    介绍 @Autowire和@Resource都是Spring支持的注解方式动态装配bean. 详解 @Autowire @Autowire默认按照类型(by-type)装配,默认情况下要求依赖对象必须 ...

  4. Autowire 和 @Resource 的区别

    1.@Autowire 和 @Resource都可以用来装配bean,都可以用于字段或setter方法. 2.@Autowire 默认按类型装配,默认情况下必须要求依赖对象必须存在,如果要允许 nul ...

  5. @Autowire 和 @Resource 的区别

    1.@Autowire 和 @Resource都可以用来装配 bean,都可以用于字段或 setter 方法. 2.@Autowire 默认按类型装配,默认情况下必须要求依赖对象必须存在,如果要允许 ...

  6. Spring注解@Component、@Repository、@Service、@Controller,@Autowired、@Resource用法

    一.Spring定义bean,@Component.@Repository.@Service 和 @Controller Spring 2.5 中除了提供 @Component 注释外,还定义了几个拥 ...

  7. @Autowire和@Resource

    注解@Autowire和@Resource,我们都知道都可以用来装配bean,将对象加载到容器之中,但是他们具体有什么区别,现在简单说明一下这俩个注解的区别. @Autowired @Autowire ...

  8. left join 和join区别_sleep、yield、join方法简介与用法 sleep与wait区别 多线程中篇

    Object中的wait.notify.notifyAll,可以用于线程间的通信,核心原理为借助于监视器的入口集与等待集逻辑 通过这三个方法完成线程在指定锁(监视器)上的等待与唤醒,这三个方法是以锁( ...

  9. PHP: 关键字global 和 超全局变量$GLOBALS的用法、解释、区别

    $GLOBALS 是一个关联数组,每一个变量为一个元素,键名对应变量名,值对应变量的内容.$GLOBALS 之所以在全局范围内存在,是因为 $GLOBALS 是一个超全局变量. php语法中,很多人都 ...

最新文章

  1. springboot1——第一个springboot程序
  2. tomcat 设置虚拟路径
  3. 在SQL Server 2005中解决死锁(转)
  4. wampserver3.0.6 外网 不能访问
  5. [XSY] 简单的博弈题(博弈+dp+组合数+容斥)
  6. debian搭建php mysql_Debian下MySQL安装经验分享
  7. UI设计灵感|音乐播放器界面如何设计?
  8. 循环体中调用[NSString stringWithFormat:@%@,Object] 方法的内存问题
  9. 二倍图css,css二倍图的使用
  10. Python的Web Services客户端
  11. 设计模式学习(三):创建型模式【转】
  12. Stack with max and min 查找栈中最大最小数
  13. 百度地图API加载点位
  14. css 如何让盒子垂直居中,css 盒子垂直居中
  15. po、bo、do、dto、vo相关图形
  16. Python实战项目23个实战小项目小程序简单
  17. leetcode387题解
  18. 流形间的映射(拉回映射与推前映射)及根据其定义的协变矢量和逆变矢量;切空间与余切空间
  19. Mybatis中TypeHandler的简单应用
  20. 信奥一本通2069(糖果问题)配解析

热门文章

  1. 每日简报 5月30日简报新鲜事 每天一分钟 了解新鲜事
  2. 工业用微型计算机课程,工业用微型计算机自学考试大纲.doc
  3. 职场语言的特征3p1A7C指什么,高校邦商务礼仪期末答案
  4. 乐学偶得QA:Git 下载下来无法安装怎么办
  5. AD软件常用技巧说明
  6. DELL XPS13 无法开机维修
  7. 法律约束得了人的行为,但约束不了人心
  8. 如何更新iPhone和iPad应用程序
  9. 欧洲麦当劳正试用RFID温度传感标签,保证食品质量
  10. 围棋入门(01)基础知识