9、Spring之推断构造方法源码解析

2023-09-17 12:12:13

推断构造方法流程图Spring推断构造方法底层执行流程| ProcessOn免费在线作图,在线流程图,在线思维导图

AutowiredAnnotationBeanPostProcessor中推断构造方法不同情况思维脑图:

Spring中的一个bean,需要实例化得到一个对象,而实例化就需要用到构造方法。

一般情况下,一个类只有一个构造方法:

  1. 要么是无参的构造方法
  2. 要么是有参的构造方法

如果只有一个无参的构造方法,那么实例化就只能使用这个构造方法了。

如果只有一个有参的构造方法,那么实例化时能使用这个构造方法吗?要分情况讨论:

  1. 使用AnnotationConfigApplicationContext,会使用这个构造方法进行实例化,那么Spring会根据构造方法的参数信息去寻找bean,然后传给构造方法
  2. 使用ClassPathXmlApplicationContext,表示使用XML的方式来使用bean,要么在XML中指定构造方法的参数值(手动指定),要么配置autowire=constructor让Spring自动去寻找bean做为构造方法参数值。

上面是只有一个构造方法的情况,那么如果有多个构造方法呢?

又分为两种情况,多个构造方法中存不存在无参的构造方法。

分析:一个类存在多个构造方法,那么Spring进行实例化之前,该如何去确定到底用哪个构造方法呢?

    更多推荐

    MLAgents (1) 球移动到指定立方体目标

    1、ML-Agents库介绍ML-Agents库,训练用于2D、3D、VR/AR游戏的智能agent,经过训练的agent可用于多种目的,包括:控制NPC行为(采用各种设置,例如多个agent和对抗)、对游戏内部版本进行自动化测试、以及评估不同游戏设计决策的预发布版本2、Unity中创建立方体、球和地面球——玩家移动和

    【iOS】ViewController的生命周期

    文章目录前言一、UIViewController生命周期有关函数二、执行顺序注意点loadview:前言在iOS开发中UIViewController扮演者非常重要的角色,它是视图view和数据model的桥梁,通过UIViewController的管理有条不紊的将数据展示在视图上。作为UIKit中最基本的一个类,一般

    数据可视化大屏模板 | 保姆级使用教程

    近来很多朋友私信咨询怎么下载使用数据可视化大屏模板,在这里就给大家做一个相对简单的教程总结。有需要的朋友记得先收藏保存,以便不时之需。数据可视化大屏制作软件:奥威BI系统数据可视化报表模板板块:模板秀主要操作:点击、拖拉拽适用人群以及场景:所有具体操作步骤:1、登录奥威BI系统后,通过点击、拖曳的方式上传数据源(该过程

    【深度学习】 Python 和 NumPy 系列教程(廿二):Matplotlib详解:2、3d绘图类型(8)3D饼图(3D Pie Chart)

    一、前言Python是一种高级编程语言,由GuidovanRossum于1991年创建。它以简洁、易读的语法而闻名,并且具有强大的功能和广泛的应用领域。Python具有丰富的标准库和第三方库,可以用于开发各种类型的应用程序,包括Web开发、数据分析、人工智能、科学计算、自动化脚本等。Python本身是一种伟大的通用编程

    虚拟人运营 | 金融品牌如何借助数字人IP撬动年轻圈层?

    近年来,金融行业在不断尝试寻找一种新方式,去探索触及Z世代年轻圈层,数字人作为数字化时代的新介质,成为了金融业链接年轻人的新载体。在银行的应用场景里,主要打造智能客服、数字员工、虚拟主播等。如浦发银行数字员工“小浦”、百信银行数字员工“AIYA”、宁波银行智能客服“小宁”、平安银行虚拟主播“平安小财娘”等等...01数

    蛤蟆先生去看心理医生笔记

    自我状态儿童自我状态:行为和感受像个孩子。由童年残留的遗迹搭建而成,包含小时候体验的所有情感(儿童的基本情感)和随后演变的行为模式。行为和感受像个孩子。由童年残留的遗迹搭建而成,包含小时候体验的所有情感(儿童的基本情感)和随后演变的行为模式。简单点说,就是我们在长大后,依旧自动做出和小时候一样的反应,童年时的情感和行为

    C语言关于自定义字符函数和字符串函数的相关笔试题(找工作必看)

    本篇字符函数和字符串函数求字符串长度strlen长度不受限制的字符串函数strcpystrcatstrcmp长度受限制的字符串函数介绍strncpystrncatstrncmp字符串查找strstrstrtok错误信息报告strerror内存操作函数memcpymemmovememsetmemcmp在我们笔试时,很有可

    C语言中的类型转换有哪些方式?

    C语言中的类型转换是将一个数据类型的值转换为另一个数据类型的值的过程。类型转换在编程中非常常见,因为它允许您在不损失数据的情况下在不同数据类型之间进行操作和赋值。在C语言中,类型转换有多种方式,包括隐式类型转换和显式类型转换。本文将详细介绍这些类型转换方式以及它们的应用场景。隐式类型转换隐式类型转换,也称为自动类型转换

    Centos7安装wps无法打开及字体缺失的问题解决

    在centos7上安装了最新的wps2019版本的wps-office-11.1.0.11704-1.x86_64.rpm,生成了桌面图标并信任,可以新建文件,但是软件无法打开。在终端执行如下命令,用命令行启动wps:cd/opt/kingsoft/wps-office/office6/./wps提示"/lib64/l

    Shell开发实践:服务器的磁盘、CPU、内存的占用监控

    🏆作者简介,黑夜开发者,CSDN领军人物,全栈领域优质创作者✌,CSDN博客专家,阿里云社区专家博主,2023年6月CSDN上海赛道top4。🏆数年电商行业从业经验,历任核心研发工程师,项目技术负责人。🎉欢迎👍点赞✍评论⭐收藏文章目录🚀一、前言🚀二、关于他们🔎2.1CPU(中央处理器)🔎2.2内存(也称

    Ubuntu安装深度学习环境相关(yolov8-python部署)

    Ubuntu安装深度学习环境相关(yolov8-python部署)本文将从如下几个方面总结相关的工作过程:1.Ubuntu系统安装(联想小新pro16)2.显卡驱动安装3.测试深度学习模型1.Ubunut系统安装之前在台式机上安装过Ubuntu,以为再在笔记本上安装会是小菜一碟,但没想还是废了一些功夫。安装所需要的步骤

    热文推荐