首页 > 编程语言 >Spring 源码解析 - xml解析封装BeanDefinition(1)

Spring 源码解析 - xml解析封装BeanDefinition(1)

时间:2023-04-05 16:45:24浏览次数:38  
标签:xml 后置 private bean 源码 处理器 解析 BeanDefinition

-   XML 解析封装BeanDefinition

    断点在  DefaultListableBeanFacy, registerBeanDefinition()

二  如果给属性赋值 

三  各种postprocessor

 

 

 

 

 

 

 

## 2、Spring套路点

- 1、AbstractBeanDefinition 看看何时给容器中注入了什么组件

- 2、BeanFactory让初始化完,监控里面多了哪些后置处理器

- 3、分析后置处理器什么时候调用,做了什么功能

> 以上所有的前提,理解**容器刷新12大步**与**getBean流程**,防止混乱
>
> 1、工厂后置处理器执行
>
> 2、bean后置处理器执行&bean的生命周期(后置处理器+InitializingBean)

 

 

 

 

 

1、这个新功能一般都是由 **bean的生命周期**机制增强出来的;

2、这个功能加入了哪些组件,这些组件在生命周期期间做了什么?

 

 

 

 

 

 

 

--------------------------------------------IOC--------------------------------------------

defautllistableBeanfactory 实现 beanfactory 
beanDefinitionMap;
beanDefinitionName;

AbstractBeanFactory{

BeanFactory parentBeanFactory

List<BeanPostProcessor> beanPostProcessors

}


DefaultSingletonBeanRegistry
singletonObject
earlysingletonObject
singletonFactory

 

BeanDefinitionregister {

registerBeanDefinition(String beanName, BeanDefinition beanDefinition)

}

AbstractApplicationContext{

private ApplicationContext parent;
private final List<BeanFactoryPostProcessor> beanFactoryPostProcessors

}

 

 

 


ConfigurationClassPostProcessor
BeanDefinitionRegistryPostProcessor
BeanFactoryPostProcessor

 


BeanPostProcessor
InstantiationAwareBeanPostProcessor
SmartInstantiationAwareBeanPostProcessor
MergedBeanDefinitionPostProcessor
AutowiredAnnotationBeanPostProcessor
AnnotationAwareAspectJAutoProxyCreator


EventListenerMethodProcessor
DefaultEventListenerFactory
SmartInitializingSingleton


// 把每一个bean定义成beandefinition 放在defaultlistablebeanfactory
obtainFreshBeanFactory();
-------------------------------------------AOP-----------------------------------------------------
AnnotationAwareAspectJAutoProxyCreator implement beanfactoryaware
AspectJAdvisorFactory
BeanFactoryAspectJAdvisorsBuilder
//拿到工厂bean defaultlistablebeanfactory
setBeanFactory()
(2) registerBeanpostProcessor 是 getbean 会执行实例化之前的方法

implement AbstractAutoProxyCreator
Map<Object, Boolean> advisedBeans
Map<Object, Class<?>> proxyTypes


BeanFactoryAspectJAdvisorsBuilder
private final Map<String, List<Advisor>> advisorsCache
List<String> aspectBeanNames; 切面类名字



 

标签:xml,后置,private,bean,源码,处理器,解析,BeanDefinition
From: https://www.cnblogs.com/ou-pc/p/15783300.html

相关文章

  • OpenJDK源码研究笔记(十):枚举的高级用法,枚举实现接口,竟是别有洞天
    在研究OpenJDK,Java编译器javac源码的过程中,发现以下代码。顿时发现枚举类竟然也有如此“高端大气上档次”的用法。沙场点兵(用法源码)com.sun.tools.javac.file.JavacFileManager.SortFilesprotectedenumSortFilesimplementsComparator<File>{FORWARD{......
  • 单机最快的队列Disruptor解析和使用
    前言介绍高性能队列Disruptor原理以及使用例子。Disruptor是什么?Disruptor是外汇和加密货币交易所运营商LMAXgroup建立高性能的金融交易所的结果。用于解决生产者、消费者及其数据存储的设计问题的高性能队列实现。可以对标JDK中的ArrayBlockingQueue。是目前单机且基于内......
  • 直播网站程序源码,element el-menu,前端做菜单搜索
    直播网站程序源码,elementel-menu,前端做菜单搜索方案一:递归+indexof实现步骤:JS实现树形结构数据的模糊搜索查询, 即使父节点没有,但子节点含有,父节点仍要返回。 /** *递归tree关键词搜索 * *@param{key}需要递归的key名 *@param{value}需要搜索查询的关键字 *......
  • 直播网站源码,修改el-input边框颜色
    直播网站源码,修改el-input边框颜色.el-input{ --el-input-hover-border-color:#f56c6c; --el-input-focus-border-color:#f56c6c;}​以上就是直播网站源码,修改el-input边框颜色,更多内容欢迎关注之后的文章 ......
  • kubegres 源码解析(二) kubebuilder简介
    摘要Kubegres完全使用KubebuilderV3版本开发,在对Kubegres进行代码解析前,首先了解一下Kubebuilder,本文尝试理清几个问题:如何使用Kubebuilder生成Controller/Operator项目?项目结构是什么,每个文件的作用是什么?具体到最重要的几个文件,代码如何组织,功......
  • Zookeeper Session源码
    我们说客户端与服务端建立连接交互的时候会创建一个Session与之对应,那假设客户端请求来了,服务端是如何处理的?Session又是如何创建出来的?我们先来看第一个问题:服务端如何处理客户端发来的请求?一、如何处理请求所谓的请求全称是网络请求,涉及到网络就少不了Socket通信,ZooKeep......
  • 简单的CMakePresets.json解析 -- configurePresets
    ----CMake官方文档-----CMakeLists.txt是通用的c++项目管理文件,在不同的设备中,环境变量,编译器等都可能不同,将这些设置都交给CMakeLists.txt,并不是一个好办法。为了降低CMakeLists.txt的臃肿程度,简化其判断,可以针对不同设备,配置不同的CMakePresets.json.使得项目可以在......
  • 多任务版TCP服务端程序开发案例+源码
    Python进阶篇-系列文章全篇......
  • Android 构建工具--AAPT2源码解析(一)
    一、什么是AAPT2在Android开发过程中,我们通过Gradle命令,启动一个构建任务,最终会生成构建产物“APK”文件。常规APK的构建流程如下:(引用自Google官方文档)编译所有的资源文件,生成资源表和R文件;编译Java文件并把class文件打包为dex文件;打包资源和dex文件,生成未签名的APK文件;签名APK生成......
  • flask:cbv源码分析、模板语法、请求与响应、session及源码分析、闪现(flash)、请求扩展
    目录一、cbv源码分析1.1基于类的视图写法1.2源码分析1.3分析源码,查找不传别名的时候为什么函数名会变成别名1.4flask的路由注册使用装饰器,如果写了一个登录认证装饰器,那么应该放在路由装饰器上还是下?1.5dispatch_request讲解1.6知识点总结二、模板语法2.1py2.2html三、请......