首页 > 编程语言 >Spring启动流程XML版(源码)

Spring启动流程XML版(源码)

时间:2024-02-24 19:46:51浏览次数:26  
标签:XML 初始化 beanFactory Spring bean 源码 方法 作用

1.XML方式配置bean启动Spring的核心类: ClassPathXmlApplicationContext -> AbstractXmlApplicationContext 

类结构如下:

 核心方法: refresh()方法, 刷新容器, 包含12个核心子方法, 如下: 

方法1: prepareRefresh();

作用:容器刷新前的准备工作

方法2: ConfigurableListableBeanFactory beanFactory = obtainFreshBeanFactory();

作用: 创建容器对象:DefaultListableBeanFactory, 加载xml配置文件的属性值到当前工厂中,最重要的就是BeanDefinition

方法3: prepareBeanFactory(beanFactory);

作用: beanFactory的准备工作,对各种属性进行填充

方法4: postProcessBeanFactory(beanFactory);

作用: 子类覆盖方法做额外的处理,此处我们自己一般不做任何扩展工作,但是可以查看web中的代码,是有具体实现的

方法5: invokeBeanFactoryPostProcessors(beanFactory);

作用: 调用各种beanFactory处理器

方法6: registerBeanPostProcessors(beanFactory);

作用: 注册bean处理器,这里只是注册功能,真正调用的是getBean方法

方法7: initMessageSource();

作用: 为上下文初始化message源,即不同语言的消息体,国际化处理,在springmvc的时候通过国际化可以实现使用

方法8: initApplicationEventMulticaster();

作用: 初始化事件监听多路广播器

方法9: onRefresh();

作用: 留给子类来初始化其他的bean

方法10: registerListeners();

作用: 在所有注册的bean中查找listener bean,注册到消息广播器中

方法11: finishBeanFactoryInitialization(beanFactory);

作用: 初始化剩下的单实例bean对象(非懒加载的)

方法12: finishRefresh();

作用: 完成刷新过程,通知生命周期处理器lifecycleProcessor刷新过程,同时发出ContextRefreshEvent通知

 

 

标签:XML,初始化,beanFactory,Spring,bean,源码,方法,作用
From: https://www.cnblogs.com/superpiter/p/18031468

相关文章

  • JWT(Token令牌)整合 SpringBoot
     前言:JWT(JSONWebToken)可以被称为令牌(token)。JWT是一种在网络应用中广泛使用的令牌格式,用于在用户和服务器之间传递安全可靠的信息。JWT通常包含了用户的身份信息和一些其他的元数据,被用作身份验证和授权。因此,人们经常将JWT简称为令牌(token)。 代码整合:1.导......
  • Spring bean life cycle
      一、概要org.springframework.beans.factory.BeanFactoryBeanfactoryimplementationsshouldsupportthestandardbeanlifecycleinterfacesasfaraspossible.Thefullsetofinitializationmethodsandtheirstandardorderis:1.BeanNameAware'ssetBea......
  • Kafka 集成SpringBoot
    1.环境准备1.Kafka集群环境准备1.准备一个Kafka集群环境并启动Kafka3.6.1集群安装与部署2.创建firstTopic/usr/kafka/kafka_2.13-3.6.1/bin/kafka-topics.sh--bootstrap-server192.168.58.130:9092--create--partitions1--replication-factor3--topicfirst2.Sp......
  • 【Spring】spring事件监听异步处理
    在Spring框架中,ApplicationEventMulticaster接口是用于发布事件的核心组件。要支持异步处理事件,可以通过配置一个能够执行异步任务的TaskExecutor与SimpleApplicationEventMulticaster配合使用。以下是一个配置示例:importorg.springframework.context.annotation.Bean;importo......
  • 【spring】spring事件监听机制
    Spring框架的事件监听机制是基于观察者模式设计的,它允许应用程序的不同组件之间通过发布和订阅事件进行松散耦合的通信。以下是对Spring事件监听机制的基本流程和技术要点:ApplicationEvent:Spring中的所有事件都必须继承自org.springframework.context.ApplicationEvent类,这个......
  • SpringBoot + Redis 的配置及使用
    一、SpringBoot配置Redis1.1pom引入spring-boot-starter-data-redis包<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></......
  • 陪玩程序源码,如何引导用户进行点赞操作?
    引导点赞我们需要让按钮做出一些视觉效果来引导用户进行点赞操作,那持续震动无疑是一种好的选择。//love.jsconstlikeBtn=document.getElementById('likeBtn');constheart=document.getElementById('heart')likeBtn.addEventListener('mousemove',()=>{heart.cl......
  • 游戏陪玩app源码,多爱心漂浮按钮周围的实现代码
    爱之满满按钮效果怎么样才能在游戏陪玩app源码中达到爱之满满按钮效果呢,那必然是越多的爱越好啊。我们想办法让爱心漂浮在按钮周围,在规定时间内爱心进行位移并消失即可。创建一个元素可以使用document.createElement,移除元素可以使用DOM的remove()剩下的就简单了,只需要在这个......
  • 浅析ThreadLocal源码
    privatevoidset(ThreadLocal<?>key,Objectvalue){//Wedon'tuseafastpathaswithget()becauseitisat//leastascommontouseset()tocreatenewentriesas//itistoreplaceexistingones,inwhichcase,afast/......
  • APIview源码分析
    1APIview的as_view -内部还是执行了View的闭包函数view-禁用掉了csrf-一切皆对象,函数也是对象函数地址.name=lqz2原生View类中过的as_view中的闭包函数view -本质执行了self.dispatch(request,*args,**kwargs),执行的是APIView的dispatch3APIView的dispatchdef......