源码
文章平均质量分 92
JAY-CHOW
这个作者很懒,什么都没留下…
展开
-
【Spring源码学习】Spring Bean实例化-循环依赖
【Spring源码学习】Spring Bean实例化-循环依赖一、什么是循环依赖二、循环依赖的步骤三、为什么有参构造函数的加@Autowired 的方式循环依赖是直接报错的?一、什么是循环依赖如果类A存在属性类B,而类B也有属性类A,那么当进行属性的依赖注入时,就会出现A还未完成创建,又由于在创建B的过程中又发生创建A的过程,造成了死循环,最终导致循环依赖。类似代码如下:public class A { private B b;} public class B { private原创 2021-04-20 13:12:34 · 165 阅读 · 0 评论 -
【Spring源码学习】FactoryBean 类型的接口
【Spring源码学习】FactoryBean 类型的接口前言一、FactoryBean接口的调用1.getObjectForBeanInstance()2.getObjectFromFactoryBean(), doGetObjectFromFactoryBean()二、总结前言在【Spring源码学习】Spring Bean实例化过程-创建Bean实例一文中,实例在真正创建完成(完成了创建、依赖属性注入、初始化)后,会有FactoryBean的接口调用,我们先定位到这段代码来看看,本章也主要跟一下这原创 2021-04-18 11:45:17 · 112 阅读 · 0 评论 -
【Spring源码学习】BeanPostProccessor的理解
【Spring源码学习】BeanPostProccessor前言Spring 初始化核心流程一、invokeBeanFactoryPostProcessors()1.作用2.源码跟踪2.1.AbstractApplicationContext.invokeBeanFactoryPostProcessors()2.2.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors()2.3.invokeBeanDefinitionRegist原创 2021-04-17 13:23:51 · 103 阅读 · 0 评论 -
【Spring源码学习】Spring Bean的销毁
【Spring源码学习】Spring Bean的销毁一、注册bean销毁的类1.registerDisposableBeanIfNecessary()2.DisposableBeanAdapter二、调用过程1.contextDestroyed()2.closeWebApplicationContext()3.close(), doClose()4.destroySingletons()5.destroyBean()6.destroy()上移章节中,我们跟完了bean的创建流程,而在创建完成以后,bean原创 2021-04-14 17:28:18 · 573 阅读 · 0 评论 -
【Spring源码学习】Spring Bean实例化过程-初始化
【Spring源码学习】Spring Bean实例化过程-初始化一、调用Aware方法1.InitializeBean()2.invokeAwareMethods()二、InitializingBean接口,afterPropertiesSet,init-method属性调用1.初始化前置处理1.1.Aware接口方法的调用1.2.@PostConstruct注解方法调用2.初始化3.初始化后置处理3.1.代理实例注入上一章讲完了populateBean的过程,这一章,我们来跟一下bean初始化的流程,主原创 2021-04-13 16:58:36 · 197 阅读 · 0 评论 -
【Spring源码学习】Spring Bean实例化过程-依赖属性注入
【Spring源码学习】Spring Bean实例化过程-依赖属性注入前言1.addSingletonFactory()2.getEarlyBeanReference()3.getEarlyBeanReference()一、依赖属性注入1.populateBean()1.1.postProcessProperties()1.2.inject()1.3.getResourceToInject(), autowireResource()前言前面一章【Spring源码学习】Spring Bean实例化过程-创原创 2021-04-13 15:35:07 · 172 阅读 · 0 评论 -
【Spring源码学习】Spring Bean实例化过程-创建Bean实例
【Spring源码学习】Spring Bean实例化过程Spring 初始化核心流程一级目录二级目录三级目录Spring 初始化核心流程spring容器初始化的核心方法AbstractApplicationContext#refresh,refresh Spring 初始化核心流程入口prepareRefresh ① 准备此上下文用于刷新,设置启动时间和active标志,初始化属性obtainFreshBeanFactory ② 创建 BeanFactory 已经跟踪过的源码流程prepar原创 2021-04-13 10:50:15 · 222 阅读 · 0 评论 -
【Spring源码学习】Spring初始化机制(xml形式)
@[TOC](【Spring源码学习】Spring初始化机制(xml形式))前言Spring 初始化核心流程本节主要跟进spring.xml核心配置类的解析过程,该流程主要包括:创建BeanFactory对象xml解析封装成BeanDefinition对象一、标签解析二、Spring标签解析流程先给出一个我自己画的时序图总结一下xml解析的主要流程:根据当前解析的标签头信息,找到对应的namespaceUri加载Spring所有jar中的META-INF/spring.h原创 2021-04-11 10:51:10 · 273 阅读 · 0 评论 -
【Spring源码学习】简介
【Spring源码学习】简介一、为什么要学习Spring源码二、怎样学习源码三、搭建Spring-Demo项目1.前期准备2.pom依赖导入3.spring.xml四、Spring容器加载方式一、为什么要学习Spring源码学习大神优秀的思想和代码风格面试专业吹牛逼的法宝写出更加优秀的代码二、怎样学习源码java基础需要过硬跟着demo跟代码记录每个知识点,方便以后查阅和修正注释关键点代码有规律的复习反复Do Exercise(不断练习)->Learning(由浅到深,由窄原创 2021-04-09 17:59:51 · 74 阅读 · 0 评论 -
【Mybatis源码学习】Spring集成Mybatis的原理分析
【Mybatis源码学习】Spring集成Mybatis的原理分析前言一、源码下载二、核心类源码解析1.SqlSessionFactoryBean2.MapperScannerConfigurer前言上一章中【Mybatis源码学习】Mybatis与Spring整合,我们介绍了Mybatis与Spring、SpringBoot的融合,其中我们提到了mybatis-spring中的几个关键类,本章我们来跟踪下这几个关键类的源码,看看它们干了些啥.一、源码下载和mybatis源码下载一样,从GitHub原创 2021-03-24 15:15:26 · 179 阅读 · 2 评论 -
【Mybatis源码学习】Sql执行
【Mybatis源码学习】Sql执行前言一、动态代理生成mapper二、sql执行前言上一篇【Mybatis源码学习】Sql解析中,我主要梳理了sql的源码解析过程,本章我通过同样的一个例子,来仔细瞧瞧sql是怎样执行下来的。主要分为三个步骤:动态代理生成mappersql执行结果集处理还是通过同样的例子来开始本章的源码sql执行过程跟踪。@Test// 程序员喜欢的风格public void quickStart() throws IOException { // 2.获取s原创 2021-03-22 15:12:46 · 101 阅读 · 0 评论 -
【Mybatis源码学习】Sql解析
【Mybatis源码学习】Sql解析前言XMLMapperBuilderXMLStatementBuilder前言之前我在【Mybatis源码学习】初始化阶段中重点讲述了核心配置类XMLConfigBuilder、XMLMapperBuilder、XMLStatementBuilder各自的功能。我们先熟悉下这“三剑客”,看下图即可。本章节中,我们重点跟一下XMLMapperBuilder、XMLStatementBuilder解析sql的源码过程。XMLMapperBuilder、XMLStat原创 2021-03-16 21:41:54 · 192 阅读 · 0 评论 -
【Mybatis源码学习】参数解析
【Mybatis源码学习】参数解析一、几种入参形式1.单个入参2.多个入参3.入参为实体对象4.入参为Map二、mybatis执行入口三、参数解析流程四、总结一、几种入参形式这里只分析带有入参的方法。1.单个入参2.多个入参3.入参为实体对象4.入参为Map二、mybatis执行入口三、参数解析流程四、总结...原创 2021-03-15 14:46:03 · 312 阅读 · 0 评论 -
【Mybatis源码学习】代理阶段
【Mybatis源码学习】代理阶段一、Mybatis 的接口层1.SqlSession2.SqlSessionFactory二、binding 模块分析0.MyBatis两种编程模型1.核心类2.运行流程三、举个栗子1.打开一个会话2.DefaultSqlSessionFactory3.newExecutor4.DefaultSqlSession5.Executor一、Mybatis 的接口层1.SqlSessionsqlSession总结总之一句话:/** * The primary Jav原创 2021-03-12 13:39:57 · 95 阅读 · 0 评论 -
【Mybatis源码学习】初始化阶段
步骤一:读取Mybatis的主配置文件,并将文件读成文件流形式(InputStream)。步骤二:从主配置文件流中读取文件的各个节点信息并存放到Configuration对象中。读取mappers节点的引用文件,并将这些文件的各个节点信息存放到Configuration对象。原创 2021-03-11 17:27:55 · 95 阅读 · 0 评论 -
【Mybatis源码学习】概述
1.怎样下载源码1.1 下载地址源码下载地址为:https://github.com/MyBatis/MyBatis-3,本学习笔记以3.5.x的版本进行解读和笔记,是对当前学习课程的总结,也是对以后进行复习打下参考的基础以及提供优化空间的前提。1.2 导入Idea1.2.1 环境maven: 3.5.3jdk: 1.8.0_191idea: 2019.31.2.2 部署与打包1)将pom文件中所有的true,全部改为 false;2)在当前工程目录下执行以下命令:mvn install原创 2021-03-11 15:13:09 · 140 阅读 · 0 评论