spring(一)实例化一个工厂DefaultListableBeanFactory流程

无感无刷电机三段式启动避坑指南:从预定位到闭环切换的STM32代码实现 本文深入解析无感无刷电机的三段式启动流程,涵盖预定位、启动加速与闭环切换三大阶段。重点对比了恒频升压、恒压升频与升频升压三种核心启动策略的优劣,并提供了基于STM32的详细状态机代码实现与关键参数调试指南,帮助工程师有效规避启动失步、线圈过热等常见问题,实现稳定可靠的无感驱动。 阅读详情

//实例化一个工厂DefaultListableBeanFactory
org.springframework.context.support.GenericApplicationContext->GenericApplicationContext()
      1、实力化一个AnnotatedBeanDefinitionReader
    2、ClassPathBeanDefinitionScanner,能够扫描我们bd,能够扫描一个类,并且转换成bd
    org.springframework.context.annotation.AnnotationConfigApplicationContext#AnnotationConfigApplicationContext()
        委托AnnotationConfigUtils
        org.springframework.context.annotation.AnnotatedBeanDefinitionReader#AnnotatedBeanDefinitionReader()  
            
            org.springframework.context.annotation.AnnotationConfigUtils#registerAnnotationConfigProcessors() //几乎所有后置处理器都是在reader构造方法时调用AnnotationConfigUtils加进去的
            
                1、添加AnnotationAwareOrderComparator类的对象,主要去排序
                2、ContextAnnotationAutowireCandidateResolver
                3、往BeanDefinitionMap注册一个ConfigurationClassPostProcessor?  org.springframework.context.annotation.internalConfigurationAnnotationProcessor
                    why?因为需要在invokeBeanFactoryPostProcessors
                    invokeBeanFactoryPostProcessors主要是在spring的beanFactory初始化的过程中去做一些事情,怎么来做这些事情呢?
                    委托了多个实现了BeanDefinitionRegistryPostProcessor或者BeanFactoryProcessor接口的类来做这些事情,有自定义的也有spring内部的
                    其中ConfigurationClassPostProcessor就是一个spring内部的BeanDefinitionRegistryPostProcessor
                    因为如果你不添加这里就没有办法委托ConfigurationClassPostProcessor做一些功能
                    到底哪些功能?参考下面的注释
                4、RequiredAnnotationBeanPostProcessor
                .......
                org.springframework.context.annotation.AnnotationConfigUtils#registerAnnotationConfigProcessors()
                    //往BeanDefinitionMap注册
                    org.springframework.context.annotation.AnnotationConfigUtils#registerPostProcessor
                        //准备好bean工厂,实例化对象
                        org.springframework.context.support.AbstractApplicationContext#refresh
                        //准备工作包括设置启动时间,是否激活标识位, 初始化属性源(property source)配置
                            org.springframework.context.support.AbstractApplicationContext#prepareRefresh
                                //得到beanFactory?因为需要对beanFactory进行设置
                                org.springframework.context.support.AbstractApplicationContext#obtainFreshBeanFactory
                                    //准备bean工厂
                                    1、添加一个类加载器
                                    2、添加bean表达式解释器,为了能够让我们的beanFactory去解析bean表达式
                                    3、添加一个后置处理器ApplicationContextAwareProcessor
                                    4、添加了自动注入别忽略的列表
                                    5、。。。。。。
                                    6、添加了一个ApplicationListenerDetector后置处理器(自行百度)
                                    org.springframework.context.support.AbstractApplicationContext#prepareBeanFactory
                                        目前没有任何实现
                                        org.springframework.context.support.AbstractApplicationContext#postProcessBeanFactory
                                            1、getBeanFactoryPostProcessors()得到自己定义的(就是程序员自己写的,并且没有交给spring管理,就是没有加上@Component)
                                            2、得到spring内部自己维护的BeanDefinitionRegistryPostProcessor
                                            org.springframework.context.support.AbstractApplicationContext#invokeBeanFactoryPostProcessors
                                                //调用这个方法
                                                //循环所有的BeanDefinitionRegistryPostProcessor
                                                //该方法内部postProcessor.postProcessBeanDefinitionRegistry
                                                org.springframework.context.support.PostProcessorRegistrationDelegate#invokeBeanDefinitionRegistryPostProcessors
                                                    //调用扩展方法postProcessBeanDefinitionRegistry
                                                    org.springframework.beans.factory.support.BeanDefinitionRegistryPostProcessor#postProcessBeanDefinitionRegistry
                                                        //拿出的所有bd,然后判断bd时候包含了@Configuration、@Import,@Compent。。。注解
                                                        org.springframework.context.annotation.ConfigurationClassPostProcessor#processConfigBeanDefinitions
                                                            1、的到bd当中描述的类的元数据(类的信息)
                                                            2、判断是不是加了@Configuration   metadata.isAnnotated(Configuration.class.getName())
                                                            3、如果加了@Configuration,添加到一个set当中,把这个set传给下面的方法去解析
                                                            org.springframework.context.annotation.ConfigurationClassUtils#checkConfigurationClassCandidate
                                                            //扫描包
                                                            
                                                            org.springframework.context.annotation.ConfigurationClassParser#parse(java.util.Set<org.springframework.beans.factory.config.BeanDefinitionHolder>)
                                                                
                                                                org.springframework.context.annotation.ConfigurationClassParser#parse(org.springframework.core.type.AnnotationMetadata, java.lang.String)
                                                                    //就行了一个类型封装
                                                                    org.springframework.context.annotation.ConfigurationClassParser#processConfigurationClass
                                                                    1、处理内部类 一般不会写内部类
                                                                    org.springframework.context.annotation.ConfigurationClassParser#doProcessConfigurationClass
                                                                        //解析扫描的一些基本信息,比如是否过滤,比如是否加入新的包。。。。。
                                                                        org.springframework.context.annotation.ComponentScanAnnotationParser#parse
                                                                            org.springframework.context.annotation.ClassPathBeanDefinitionScanner#doScan
                                                                            org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider#findCandidateComponents
                                                                                org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider#scanCandidateComponents

流量PID控制(开度前馈量计算+辅助PID) PLC通过伯努利方程近似计算水箱流量(FC)-优快云博客文章浏览阅读1.6k次。本文介绍了如何使用PLC通过伯努利方程近似计算水箱中的液体流量,主要涉及流量计算、模型验证、梯形图编程及STL代码实现。适合自动化领域的学习者参考。单容双容水箱建模(simulink仿真+PLC代码)_水箱系统的建模方法-优快云博客文章浏览阅读2k次。该博客介绍了如何使用伯努利方程建立单容和双容水箱模型,详细阐述了从理论建模到PLC编程的实现过程。 阅读详情

相关推荐

【史诗级】详细阐述借助AI实现对Windows蓝屏原因进行精确定位的方法

在解决问题的过程中我决定把这一切都记录下来,并整理出一套通用的方法,方便快速精确定位引起蓝屏的真实原因。今天我的蓝屏代码是0x000000ef,而你或许是遇到另一个蓝屏代码,代码本身代表的含义不是这里的讨论重点,重要的是解决问题的底层逻辑。

sprlightning的博客 1万+

第4讲:BeanFactory的一个重要的实现类,DefaultListableBeanFactory,及资源的载入

为什么提这个类呢?直接说这个类可能会感到陌生,但是提到XmlBeanFactory,可能就有点感觉了吧,实际上DefaultListableBeafFactory是XmlBeanfFactory的父类。 不管是哪个BeanFactory,他们的启动过程都类似,这里以DefaultListableBeanFactory为例 启动Ioc容器的方式: XmlBeanFactory factory = new XmlBeanFactory(new ClassPathResource("beans.xml"))

W85264的博客 515

干法刻蚀工艺进阶:如何通过调节DC自偏压优化刻蚀速率和各向异性

本文深入探讨了干法刻蚀工艺中DC自偏压的精细调控艺术。DC自偏压是影响刻蚀速率和各向异性的关键因素,文章通过实战案例,详细分析了如何通过调节射频功率、频率、腔室压力及气体成分等参数,间接而有效地控制DC自偏压,从而优化高深宽比硅沟槽等复杂结构的刻蚀效果,实现工艺性能的精准提升。

weixin_28308325的博客 326

spring之DefaultListableBeanFactory的bean的创建过程

一、DefaultListableBeanFactory简介 DefaultListableBeanFactory是bean加载的核心部分,是Spring注册及加载的默认实现。继承关系如下图: AbstractAutowireCapableBeanFactory完成Bean的创建,属性的注入,切面代理的产生,bean的生命周期的管理。 二、AbstractAu...

NCS123456的博客 2592

国产麒麟系统中的PaddleOCR离线绿色部署:高效安全的文字识别新纪元

摘要:本文详细介绍了PaddleOCR在银河麒麟V10SP1系统上的离线部署方案。通过Conda虚拟环境隔离依赖,采用离线包安装方式实现无网络部署,支持80+语言识别。重点讲解了模型量化剪枝优化、多线程处理等性能调优技巧,并提供了完整的OCR识别代码示例。该方案具有数据本地化处理的安全优势,适用于医疗票据数字化等对隐私要求严格的场景,同时解决了模型加载失败、内存不足等常见问题。

墨夶的博客 1227

DataGridView 右键菜单复制(公共)

dataGridView1.CellMouseClick += new DataGridViewCellMouseEventHandler( (sender1, e1) => { if (e1.Button == MouseButtons.Right) {

沁心渃水 2830

DefaultListableBeanFactory 对象自定义赋值

DefaultListableBeanFactory 对象自定义赋值

nandao158的博客 328

普通开普勒式望远镜光学设计1-初始结构设计选型与物镜像差校正

普通开普勒式望远镜光学设计1: 完成了望远镜的总体结构设计,确定其物镜与目镜的初始结构选型,使用Zemax软件完成望远镜的双胶合物镜的像差校正。

faust_cao的博客 1万+

java.lang.NoSuchMethodError: org.springframework.beans.factory.config.ConfigurableListableBeanFactor

java.lang.NoSuchMethodError: org.springframework.beans.factory.config.ConfigurableListableBeanFactory.getApplicationStartup()Lorg/springframework/core/metrics/ApplicationStartup; 问题原因:检查spring-core版本与spring-jdbc版本是否一致,同理如果是其他包检查版本是否一致 错误: <dependency&

baidu_39555470的博客 5300

第一百三十九回 介绍三个BLE包

本章回中主要介绍了Flutter中BLE的概念和操作方法,主要介绍了三个BLE包的功能和差异,以方便大家在BLE操作中选择不同的包。

talk_8的专栏 574

YOLO26原创自研: 魔改Bottleneck,具备多尺度和特征通道融合的结构

魔改Bottleneck,具备多尺度和特征通道融合的结构,该模型在检测准确性方面都取得了良好的效果,尤其在缺陷检测方向。

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 315

spring boot 程序 报错

*************************** APPLICATION FAILED TO START *************************** Description: An attempt was made to call a method that does not exist. The attempt was made from the following location: org.springframework.context.support.PostProc..

weixin_40956096的博客 1763

深入解析机器人软件开发中的核心:状态机管理(FSM)—— 理论、实践与优化

状态机(FSM)是机器人软件开发中管理复杂行为逻辑的核心工具,广泛应用于导航、任务执行、故障处理等场景。本文系统探讨状态机的基础理论(定义、要素)、主流设计模式(经典FSM、分层状态机HSM、行为树BT),以及工业级实现方法(代码架构、线程安全、调试技巧)。通过移动机器人导航和机械臂任务执行的案例,分析分层状态机的实际应用,并总结常见陷阱(如状态爆炸、阻塞操作)与优化策略(异步化、事件过滤)。

郑伟强dev的专栏 292

【spring源码系列-06】refresh中obtainFreshBeanFactory方法的执行流程

obtainFreshBeanFactory

zhenghuishengq的博客 1万+

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

DefaultListableBeanFactory初始化源码详解

本文解析了Spring框架中DefaultListableBeanFactory的初始化过程,重点关注其在AnnotationConfigApplicationContext创建时的构造流程。通过时序图和类继承关系分析。 核心逻辑包括: 标记BeanNameAware等三个接口为忽略自动注入 根据GraalVM环境检测结果选择实例化策略(Simple或Cglib) 解析揭示了Spring容器的底层设计思想,包括依赖处理机制和环境适配策略。结合源码可深入理解Spring的核心初始化过程。

weixin_51786043的博客 1071

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

spring实例化-构造函数实例化

spring实例化分为构造函数实例化和静态工厂实例化;当我们没有指定具体的实例化方式时,默认采用无参的构造函数实例化。 一:bean,xml <bean id="userService" class="service.UserService"> <property name="map"> <map> <entry key="name" value="test"/> <entry key="age" value="20"/>

保质期已过 680

手撕spring02源码

创建工厂DefaultListableBeanFactory注册bean(相关类信息),将注册的类信息放入DefaultListableBeanFactory的map中通过bean工厂获取类的对象调用继承了抽象类AbstractAutowireCapableBeanFactory继承的AbstractBeanFactory的getBean方法从抽象类AbstractBeanFactory继承的DefaultSingletonBeanRegistry类的getSingleton方法获取类信息。

qq_37669050的博客 222

Spring IOC源码解析:Spring容器启动流程

基本概念 Spring是一个IOC容器 当我们不用Spring进行开发时,我们需要在代码中设置对象的依赖关系。当我们用了Spring之后,由Spring来管理这种依赖关系,当我们想使用对象时,直接从Spring容器中获取即可 BeanDefinition 在Spring中对象被叫做Bean,因为Spring Bean在Java类的基础上增加了很多概念,比如scope(作用域),isLazyInit(是否延迟初始化),isSingleton(是否单例),此时Java类不能完整的描述,所以需要新的定义描述类,.

小识的博客 921

SpringBean 生命周期各种BeanPostProcessor调用时机整理

【代码】SpringBean 生命周期各种BeanPostProcessor调用时机整理。

Gabriel的博客 245

Spring源码深度解析 容器的基本实现总结

容器基本用法 bean 定义 配置文件 测试代码 直接使用 BeanFactory 作为容器对于 Spring 的使用来说并不多见,甚至是甚少使用,因为 在企业级的应用中大多数都会使用的是 ApplicationContext 功能分析 读取配置文件 beanFactoryTest.xml 根据 beanFactoryTest.xml 中的配置找到对应的类的配直,并实例化 调用实例化后的实例 ConfigReader :用于读取及验证配置文件 我们要用配置文件里面的东西,当然首先 要做的就是读取,然后

勤劳的搬运工 404

Spring-DefaultListableBeanFactory介绍

Spring-DefaultListableBeanFactory是Spring Framework中的一个核心类,用于实现Bean的管理和依赖注入功能。DefaultListableBeanFactory是BeanFactory的一个具体实现类,它继承自AbstractAutowireCapableBeanFactory并实现了ListableBeanFactory和BeanDefinitionRegistry接口。它的主要作用是通过读取和解析Bean定义信息来创建和管理Bean实例。

架构师之路。。 1519

【Spring】DefaultListableBeanFactory 详解

DefaultListableBeanFactory 是 Spring 容器的核心实现,提供完整的 Bean 管理功能。它作为 Bean 注册中心,支持动态注册 BeanDefinition、依赖注入和生命周期管理,并能处理循环依赖。与其他 BeanFactory 不同,它实现了 BeanDefinitionRegistry 接口,支持编程式容器配置。核心功能包括:注册/获取 Bean、管理后置处理器、预初始化单例等。适用于测试场景、轻量级容器需求及需要精细控制 Bean 生命周期的场景,相比 Applic

瘦到被风吹走的博客 1194

【五】Spring源码分析之实例化Bean----DefaultListableBeanFactory的preInstantiateSingletons方法

一、简介 该方法最主要做的事是:把BeanDefinition注册表中的所有单例、非懒加载的bean全部实例化 该方法的入口: 二、源码分析 DefaultListableBeanFactory类preInstantiateSingletons方法 public void preInstantiateSingletons() throws BeansException { if...

Sid小杰的博客 2659

Spring-IOC之DefaultListableBeanFactory

  DefaultListableBeanFactory是一个可以独立运行使用的默认IOC容器实现类,通过与BeanDefinitionReader建立依赖关系后,在启动期间可以对事先准备的元数据(Configuration MetaData,如XML配置信息等)进行加载和解析,并将解析后得到的描述信息(BeanDefinition)进行编组,最后再将编组对象(BeanDefinitionHolder)注册到DefaultListableBeanFactory的本地缓存中。当DefaultListableB

Daniele的博客 997

DefaultListableBeanFactory学习

DefaultListableBeanFactory 是 Spring 框架中的一个核心类,它实现了 BeanFactory、HierarchicalBeanFactory 和 ListableBeanFactory 接口,同时也间接实现了 BeanDefinitionRegistry 和 AliasRegistry 接口。DefaultListableBeanFactory 提供了完整的 bean 工厂功能,包括注册、定义、配置和管理 bean,还支持 bean 的别名设置。

weixin_44877172的博客 2366

Spring之强大的DefaultListableBeanFactory

如何查看类继承结构参考这里

小阳同学的博客 2434

【Spring源码】BeanFactory和DefaultListableBeanFactory

摘要:DefaultListableBeanFactory是Spring容器中BeanFactory接口的完整实现,作为最核心的容器实现类,它继承了基础BeanFactory接口并扩展了ConfigurableListableBeanFactory和BeanDefinitionRegistry接口的功能。该实现类不仅提供基本的Bean获取功能,还实现了Bean注册、依赖注入、类型查找等全套容器功能。在Spring架构中,BeanFactory定义基础契约,而DefaultListableBeanFactor

hrh的博客 936
上一篇: AES加密算法踩坑
下一篇: springcloud踩坑
HelloWorld_Joe
博客等级 码龄9年 1粉丝 26原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值