首页 > 其他分享 >@Autowired和@Resource的区别

@Autowired和@Resource的区别

时间:2023-07-11 16:14:00浏览次数:29  
标签:装配 匹配 区别 Autowired 指定 bean 注解 Resource

@Autowired和@Resouce的区别


@Autowired默认情况下它要求依赖对象必须存在,如果允许null值,可以设置它required属性为false。


@Autowired装配顺序

  • 先根据所需组件的类型到IOC容器中查找唯一的bean

    • 能找到唯一的bean,执行装配

    • 找不到,装配失败

    • 和所需类型匹配的bean不止一个:

      • 没有@Qualifier注解:则根据@Autowired注解标记的位置的成员变量的变量名作为bean的id来匹配
        • 能找到,执行装配、到不到,装配失败
      • 有@Qualifier注解:则根据@Qualifier注解后指定的名称作为bean的id来匹配
        • 能找到,执行装配、到不到,装配失败

@Resource装配顺序

  • 如果同时指定了name和type,则从Spring上下文中找到唯一匹配的bean进行装配,找不到则抛出异常
  • 如果指定了name,则从上下文中查找名称(id)匹配的bean进行装配,找不到则抛出异常
  • 如果指定了type,则从上下文中找到类型匹配的唯一bean进行装配,找不到或者找到多个,都会抛出异常
  • 如果既没有指定name,又没有指定type,则自动按照byName方式进行装配;如果没有匹配,则再按照类型进行匹配,如果匹配则自动装配;

标签:装配,匹配,区别,Autowired,指定,bean,注解,Resource
From: https://www.cnblogs.com/cheeng/p/17544993.html

相关文章

  • 95.静态成员与普通成员的区别是什么?
    95.静态成员与普通成员的区别是什么?1.生命周期静态成员变量从类被加载开始到类被卸载,一直存在;普通成员变量只有在类创建对象后才开始存在,对象结束,它的生命期结束;2.共享方式静态成员变量是全类共享;普通成员变量是每个对象单独享用的;3.定义位置普通成员变量存储在栈或堆中,而......
  • 100.你知道strcpy和memcpy的区别是什么吗?
    100.你知道strcpy和memcpy的区别是什么吗?1.复制的内容不同。strcpy只能复制字符串,而memcpy可以复制任意内容,例如字符数组、整型、结构体、类等。2.复制的方法不同。strcpy不需要指定长度,它遇到被复制字符的串结束符"\0"才结束,所以容易溢出。memcpy则是根据其第3个参数决定复制的......
  • 接口和抽象类的区别是什么?
    一.介绍1. 接口 Interface接口可以称之为一种规范,在Java中被用来定义一组方法,而不提供具体的实现细节,它规定了一个类应该要实现哪些方法;其他类可以通过实现接口来达到代码重用和多态性的目的,帮助我们构建可扩展、灵活和可复用的代码。接口使用步骤:......
  • 77.C++中的指针参数传递和引用参数传递有什么区别?底层原理你知道吗?
    77.C++中的指针参数传递和引用参数传递有什么区别?底层原理你知道吗?1.指针参数传递本质上是值传递,它所传递的是一个地址值。值传递过程中,被调函数的形式参数作为被调函数的局部变量处理,会在栈中开辟内存空间以存放由主调函数传递进来的实参值,从而形成了实参的一个副本(替身)。值传......
  • 「Python」load和loads的区别
    在Python中,load和loads都是用于处理JSON数据的函数,但它们的使用场景和功能略有不同:json.load():用于从文件中读取JSON数据并将其解析为Python对象。它接受一个文件对象作为参数,并返回解析后的JSON数据。示例:importjson#从文件中读取JSON数据withopen('dat......
  • Exploiting Noise as a Resource for Computation and Learning in Spiking Neural Ne
    郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布!https://arxiv.org/abs/2305.16044 Summary Keywords Introduction  ResultsNoisyspikingneuralnetworkandnoise-drivenlearning NSNNleadstohigh-performancespikingneuralmodels NSNN......
  • how与what的用法和区别
    感叹句指的是具有强烈的情感色彩、表达出较强的语气情感比如喜悦、惊讶、愤怒等的句子。在英语中,感叹句一般由“how”与“what”引导。"what"和"how"与所修饰的词置于句首,其它部分用陈述句语序。一、how与what的用法:1、由"what"引导的感叹句:"what"意为"多么"用作定语,修饰名词(被......
  • ==与 equals 的区别?
    一.介绍:Java中的"==" 是一个运算符,是用于比较两个对象地址值或基本数据类型之间的值是否相等。它的来源可以追溯到C语言,以及受C语言影响的许多其他编程语言。Java中的equals()是一个方法,可重写该方法用于比较两个对象属性内容是否相等的方法。该方法继承自Obje......
  • strcpy、strncpy与memcpy的区别你了解吗?
    一、定义1.memcpy函数void*memcpy(void*destin,void*source,unsignedn);作用:函数memcpy从source指向的对象中复制n个字符到destin指向的对象中返回值:函数memcpy返回destin的指针。2.strcpy函数charstrcpy(chardest,constchar*src);作用:函数strcpy把src指向的......
  • 细节决定成败:探究Mybatis中javaType和ofType的区别
    一.背景描述今天给学生讲解了Mybatis框架,学习了基础的ORM框架操作及多对一的查询。在练习的时候,小张同学突然举手求助,说在做预习作业使用一对多查询时,遇到了ReflectionException 异常 。二.情景再现1.实体类为了给大家讲清楚这个异常的产生原因,壹哥先列出今天案例中涉及到的两......