源码分析篇
文章平均质量分 96
源码分析
猫吻鱼
不是我鸽,是我太忙。
感觉要猝死
展开
-
Spring源码分析二十六 :Actuator 浅析②
本文是笔者阅读Spring源码的记录文章,由于本人技术水平有限,在文章中难免出现错误,如有发现,感谢各位指正。在阅读过程中也创建了一些衍生文章,衍生文章的意义是因为自己在看源码的过程中,部分知识点并不了解或者对某些知识点产生了兴趣,所以为了更好的阅读源码,所以开设了衍生篇的文章来更好的对这些知识点进行进一步的学习。全集目录:Spring源码分析:全集整理在上文 Spring源码分析二十五 :Actuator 浅析① 中我们介绍了 Springboot 中对于 Endpoint 的处理,我们知道了每个端点发现原创 2022-06-10 16:14:36 · 1759 阅读 · 0 评论 -
Spring源码分析二十五 :Actuator 浅析①
本文是笔者阅读Spring源码的记录文章,由于本人技术水平有限,在文章中难免出现错误,如有发现,感谢各位指正。在阅读过程中也创建了一些衍生文章,衍生文章的意义是因为自己在看源码的过程中,部分知识点并不了解或者对某些知识点产生了兴趣,所以为了更好的阅读源码,所以开设了衍生篇的文章来更好的对这些知识点进行进一步的学习。全集目录:Spring源码分析:全集整理在 Springboot 中, 端点可以通过 JMX 方式使用, 也可以使用 Http 方式使用,本文着重介绍与 Http 方式的使用和实现。关于Actua原创 2022-06-10 16:13:25 · 2470 阅读 · 0 评论 -
Spring源码分析二十四 : cglib 的代理过程
一、前言在 Spring Aop 中,存在 Advice、 PointCut、Advisor 三个角色。其中存在DynamicIntroductionAdvice :IntroductionAdvisor二、动态引介 Demohttps://blog.csdn.net/f641385712/article/details/89303088原创 2021-08-24 20:12:30 · 1956 阅读 · 0 评论 -
Spring源码分析二十三:动态数据源的实现
一、前言二、演示Demo三、源码分析1. AbstractRoutingDataSource动态数据源的核心类是 AbstractRoutingDataSource原创 2021-06-03 15:49:22 · 776 阅读 · 1 评论 -
Spring 源码分析四 :bean的加载② - doGetBean详解
文章目录一、前言二、1. 转换 beanName2. 尝试从缓存中加载单例3. 从bean 的实例中获取对象3.1 `AbstractAutowireCapableBeanFactory#getObjectForBeanInstance`3.2 `AbstractBeanFactory#getObjectForBeanInstance`3.2.1 `doGetObjectFromFactoryBean`4 原型模式的依赖检查 - isPrototypeCurrentlyInCreation5 递归 pare原创 2021-01-12 16:28:47 · 3004 阅读 · 0 评论 -
Spring 源码分析零:Springboot的启动流程
一、前言本系列是在修改Spring源码分析系列文章时发现的部分内容并不完整,故开篇进行补充的内容。因本人水平有限,部分内容是个人理解,故内容不免有错误之处,如有错异,欢迎指正。本文是针对 Springboot run方法的启动流程的分析。下面是一个简单的项目,我们直接开始看run方法@SpringBootApplicationpublic class SpringbootDemoApplication { public static void main(String[] args)原创 2021-01-07 17:11:25 · 19622 阅读 · 2 评论 -
Spring源码分析二十二:Spring MVC③ DispatcherServlet的逻辑
本文是笔者阅读Spring源码的记录文章,由于本人技术水平有限,在文章中难免出现错误,如有发现,感谢各位指正。在阅读过程中也创建了一些衍生文章,衍生文章的意义是因为自己在看源码的过程中,部分知识点并不了解或者对某些知识点产生了兴趣,所以为了更好的阅读源码,所以开设了衍生篇的文章来更好的对这些知识点进行进一步的学习。原创 2020-11-04 15:39:13 · 1117 阅读 · 0 评论 -
Spring源码分析二十一:Spring MVC② DispatcherServlet的初始化
一、前言二、 FrameworkServlet#initWebApplicationContext下面我们看看 FrameworkServlet#initWebApplicationContext 的代码如下: protected WebApplicationContext initWebApplicationContext() { WebApplicationContext rootContext = WebApplicationContextUtils.getWebApplicati原创 2020-10-30 16:49:06 · 1402 阅读 · 0 评论 -
Spring源码分析二十:Spring MVC① 搭建
文章目录一、前言二、一、前言本文是笔者阅读Spring源码的记录文章,由于本人技术水平有限,在文章中难免出现错误,如有发现,感谢各位指正。在阅读过程中也创建了一些衍生文章,衍生文章的意义是因为自己在看源码的过程中,部分知识点并不了解或者对某些知识点产生了兴趣,所以为了更好的阅读源码,所以开设了衍生篇的文章来更好的对这些知识点进行进一步的学习。二、...原创 2020-10-19 11:23:44 · 1301 阅读 · 0 评论 -
Spring源码分析十九:事务实现⑤ - 事务的提交
一、前言二、事务的提交 - commitTransactionAfterReturningcommitTransactionAfterReturning 的实现在 TransactionAspectSupport#commitTransactionAfterReturning 中。完成了事务的提交任务。上面我们分析了Spring的事务异常处理机制。如果事务的执行并没有出现任何异常,那么也就意味着事务可以走正常的提交流程了。 protected void commitTransactionAfterR原创 2020-07-12 20:03:59 · 1014 阅读 · 0 评论 -
Spring源码分析十八:事务实现④ - 事务的回滚
一、前言二、事务的回滚 - completeTransactionAfterThrowingcompleteTransactionAfterThrowing 的实现是 TransactionAspectSupport#completeTransactionAfterThrowing。在出现异常的时候,通过该方法进行事务的回滚。下面我们来看具体代码实现 : protected void completeTransactionAfterThrowing(@Nullable TransactionInfo原创 2020-07-12 20:03:30 · 1206 阅读 · 0 评论 -
Spring源码分析十七:事务实现③ - 事务的创建
一、前言1. TransactionSynchronizationManagerTransactionSynchronizationManager。TransactionSynchronizationManager 中使用 ThreadLocal 保存了在不同线程中不同事务的信息。**2.二、事务的创建 - createTransactionIfNecessaryTransactionAspectSupport#createTransactionIfNecessary 中完成了事务的创建,这里面考原创 2020-07-12 20:02:38 · 1868 阅读 · 3 评论 -
Spring源码分析十六:事务实现② - ProxyTransactionManagementConfiguration
一、前言本文是笔者阅读Spring源码的记录文章,由于本人技术水平有限,在文章中难免出现错误,如有发现,感谢各位指正。在阅读过程中也创建了一些衍生文章,衍生文章的意义是因为自己在看源码的过程中,部分知识点并不了解或者对某些知识点产生了兴趣,所以为了更好的阅读源码,所以开设了衍生篇的文章来更好的对这些知识点进行进一步的学习。由于 事务的源码和 前篇的 Aop 源码逻辑很类似,所以本篇中某些内容不会展开去讲解,建议先阅读完 Spring源码分析十一:@AspectJ方式的AOP再来阅读本文会更好理解。–原创 2020-07-12 19:59:17 · 4217 阅读 · 0 评论 -
Spring源码分析十五:事务实现① - AutoProxyRegistrar
文章目录一、前言二、一、前言本文是笔者阅读Spring源码的记录文章,由于本人技术水平有限,在文章中难免出现错误,如有发现,感谢各位指正。在阅读过程中也创建了一些衍生文章,衍生文章的意义是因为自己在看源码的过程中,部分知识点并不了解或者对某些知识点产生了兴趣,所以为了更好的阅读源码,所以开设了衍生篇的文章来更好的对这些知识点进行进一步的学习。二、...原创 2020-07-12 19:53:23 · 2520 阅读 · 0 评论 -
Spring源码分析十四:@Aspect方式的AOP下篇 - createProxy
文章目录一、前言1. ProxyFactory二、创建代理类 - createProxy1. buildAdvisors(beanName, specificInterceptors);2. proxyFactory.getProxy(getProxyClassLoader());2.1 ProxyCreatorSupport#createAopProxy2.2 getProxy(classLoader)五、总结一、前言本文是笔者阅读Spring源码的记录文章,由于本人技术水平有限,在文章中难免出现原创 2020-07-07 22:30:03 · 1820 阅读 · 2 评论 -
Spring源码分析十三:@Aspect方式的AOP中篇 - getAdvicesAndAdvisorsForBean
一、前言这个方法的实现在 AbstractAdvisorAutoProxyCreator 类中。getAdvicesAndAdvisorsForBean 的作用是获取所有适用于当前Bean 的 Advisors 。因为并不是所有的规则都适用于当前bean,所有会有一个筛选的过程。这个方法的逻辑分为两步:寻找所有的顾问(Advisors) – findCandidateAdvisors寻找所有顾问(Advisors) 中适用于bean 的增强并应用 – findAdvisorsThatCanApp原创 2020-07-04 14:57:40 · 2556 阅读 · 0 评论 -
Spring源码分析十二:@Aspect方式的AOP上篇 - @EnableAspectJAutoProxy
一、前言本文是笔者阅读Spring源码的记录文章,由于本人技术水平有限,在文章中难免出现错误,如有发现,感谢各位指正。在阅读过程中也创建了一些衍生文章,衍生文章的意义是因为自己在看源码的过程中,部分知识点并不了解或者对某些知识点产生了兴趣,所以为了更好的阅读源码,所以开设了衍生篇的文章来更好的对这些知识点进行进一步的学习。1. @EnableAspectJAutoProxy在使用AspectJ AOP 功能时,我们需要使用注解 @EnableAspectJAutoProxy(proxyTargetC原创 2020-07-04 14:57:07 · 3826 阅读 · 3 评论 -
Spring源码分析十:SpringBoot中Mybatis的自动化配置
文章目录一、前言二、一、前言本文是笔者阅读Spring源码的记录文章,由于本人技术水平有限,在文章中难免出现错误,如有发现,感谢各位指正。在阅读过程中也创建了一些衍生文章,衍生文章的意义是因为自己在看源码的过程中,部分知识点并不了解或者对某些知识点产生了兴趣,所以为了更好的阅读源码,所以开设了衍生篇的文章来更好的对这些知识点进行进一步的学习。二、...原创 2020-06-14 12:42:24 · 2763 阅读 · 0 评论 -
Spring源码分析九:JdbcTemplate 的源码分析
文章目录一、前言二、一、前言本文是笔者阅读Spring源码的记录文章,由于本人技术水平有限,在文章中难免出现错误,如有发现,感谢各位指正。在阅读过程中也创建了一些衍生文章,衍生文章的意义是因为自己在看源码的过程中,部分知识点并不了解或者对某些知识点产生了兴趣,所以为了更好的阅读源码,所以开设了衍生篇的文章来更好的对这些知识点进行进一步的学习。二、...原创 2020-06-14 12:42:05 · 1338 阅读 · 0 评论 -
Spring源码分析二:BeanFactoryPostProcessor 的处理
本文是笔者阅读Spring源码的记录文章,由于本人技术水平有限,在文章中难免出现错误,如有发现,感谢各位指正。在阅读过程中也创建了一些衍生文章,衍生文章的意义是因为自己在看源码的过程中,部分知识点并不了解或者对某些知识点产生了兴趣,所以为了更好的阅读源码,所以开设了衍生篇的文章来更好的对这些知识点进行进一步的学习。原创 2020-06-06 14:02:48 · 5468 阅读 · 5 评论 -
Spring源码分析一:容器的刷新 - refresh()
一、前言本文基于 Spring-boot 2.2.6二、 AbstractApplicationContext#refresh @Override public void refresh() throws BeansException, IllegalStateException { synchronized (this.startupShutdownMonitor) { // Prepare this context for refreshing. // 准备刷新上下文环境原创 2020-06-06 14:02:13 · 10324 阅读 · 6 评论 -
Spring源码分析八:bean的初始化⑥ - initializeBean
@[TOC](文章目录)# 一、前言 本文是我打算系统阅读Spring 源码的第一篇章,从中也创建了一些衍生文章,衍生文章的意义是因为自己在看源码的过程中,部分知识点并不了解或者对某些知识点产生了兴趣,所以为了更好的阅读源码。原创 2020-05-30 13:47:18 · 2540 阅读 · 3 评论 -
Spring源码分析七:bean的属性注入⑤ - populateBean
文章目录一、前言二、一、前言本文是我打算系统阅读Spring 源码的第一篇章,从中也创建了一些衍生文章,衍生文章的意义是因为自己在看源码的过程中,部分知识点并不了解或者对某些知识点产生了兴趣,所以为了更好的阅读源码。这篇文章应该是接着 Spring源码分析二:单例bean的获取 - createBean 的继续分析过程。本文主要是分析Spring 具体创建bean的过程。本文的分析代码在 AbstractAutowireCapableBeanFactory#doCreateBean 方法中二原创 2020-05-28 19:14:05 · 3983 阅读 · 0 评论 -
Spring源码分析六:bean的创建④ - createBeanInstance
一、前言二、createBeanInstancecreateBeanInstance 根据方法名就知道,是创建bean的实例,也就注定了这个方法的不平凡。下面就来一步一步的剖析他。整个方法的源码如下: protected BeanWrapper createBeanInstance(String beanName, RootBeanDefinition mbd, @Nullable Object[] args) { // Make sure bean class is actually res原创 2020-05-23 13:30:58 · 3388 阅读 · 1 评论 -
Spring源码分析五 :bean的获取③ - getSingleton
一、前言其实本篇都算不得衍生篇了,因为单单这一个方法里面其实包含了bean 的创建过程。过程很复杂二、简介DefaultSingletonBeanRegistry#getSingleton(java.lang.String, org.springframework.beans.factory.ObjectFactory<?>)前情回顾:主文中分析了Bean 的创建过程,在第八...原创 2020-05-17 18:57:15 · 4173 阅读 · 1 评论 -
Spring源码分析十一:Springboot 自动装配
文章目录一、前言二、简介1. ImportSelector2. spring.factories三、源码解析1. 原理概述1.1 @EnableAutoConfiguration1.2 AutoConfigurationImportSelector1.3 META-INF/spring.factories2. 总结四、关于ImportSelector的简陋Demo1. EnableDemo2....原创 2020-04-05 17:40:14 · 2467 阅读 · 0 评论 -
Spring 源码分析三 :bean的加载① - doGetBean概述
一、前言二、简介1. 准备工作1.我们首先需要了解下面四个集合的作用如下singletonObjects : 用于保存BeanName和创建bean实例之间的关系,即缓存bean。 beanname -> instancesingletonFactories :用于保存BeanName和常见bean的工厂之间的关系。beanname->ObjectFactoryearl...原创 2020-05-02 10:09:59 · 5142 阅读 · 2 评论