08 2022 档案
摘要:Spring事务是基于Spring Aop的扩展 AOP的知识参见《Spring 源码学习笔记10——Spring AOP》 图片参考了https://www.processon.com/view/60f4d859e0b34d0e1b6bb40c?fromnew=1 逻辑事务和物理事务的概念来自ht
阅读全文
摘要:参考书籍《Spring技术内幕》Spring AOP的实现章节 书有点老,但是里面一些概念还是总结比较到位 源码基于Spring-aop 5.3.22 可能和旧版本有所差异但是大体逻辑一致 一丶AOP概述 AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过
阅读全文
摘要:-"我想写得更优雅,可是没人告诉我怎么写得更优雅" -"Null的含糊语义让人很不舒服。Null很少可以明确地表示某种语义,例如,Map.get(key)返回Null时,可能表示map中的值是null,亦或map中没有key对应的值。Null可以表示失败、成功或几乎任何情况。使用Null以外的特定值
阅读全文
摘要:Mybatis CachingExecutor, 二级缓存,缓存的实现 一丶二级缓存概述 上一章节,我们知道mybaits在构造SqlSession的时候,需要让SqlSession持有一个执行器,如果配置了缓存开启,那么在Configuration.newExecutor的时候,会使用Cachin
阅读全文
摘要:一丶前情回顾 书接上回,下面是SimpleExecutor执行查询的主要逻辑 prepareStatement 实现获取数据库连接, 其中连接是从Transaction.getConnection方法,Transaction存在一个实现SpringManagedTransaction(如何整合了Sp
阅读全文
摘要:Mybatis5 StatementHandler ,ParameterHandler 一丶概述 前面我们总结了SqlSession >CachingExecutor >BaseExector >Excutor子类 doQuery,doUpdate的执行流程,mybatis操作数据库总归是基于JDB
阅读全文
摘要:Mybatis CachingExecutor, 二级缓存,缓存的实现 一丶二级缓存概述 上一章节,我们知道mybaits在构造SqlSession的时候,需要让SqlSession持有一个执行器,如果配置了缓存开启,那么在Configuration.newExecutor的时候,会使用Cachin
阅读全文
摘要:一丶 SqlSessionFactoryBuilder,SqlSessionFactory,sqlSession mybatis 获取sqlSession是通过SqlSessionFactory获取的,SqlSessionFactory又是由SqlSessionFactoryBuilder创建出来的
阅读全文
摘要:一丶mybatis概述 MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Ol
阅读全文
摘要:A丶系列文章目录 一丶JUC源码系列 本系列从AQS独占,共享,等待队列依次推进,并且穿插的分析了常见工具如ReentrantLock,CountDownLatch,原子类,FutureTask,ThreadPoolExecutor等,后续会持续更新学习。 1.JUC源码学习笔记1——AQS独占模式
阅读全文
摘要:一丶前言 上篇中我们了解了Spring bean的实例化——存在方法覆盖的使用CGLIB动态代理生成子类,反之反射调用构造函数。实例化后bean中的字段都是默认值,接下来就是对bean的属性进行填充,并且还会调用一些生命周期相关的方法 二丶源码学习的简单例子 基于xml配置 三丶属性注入 属性注入的
阅读全文
摘要:一丶前言 前面我们了解到读取xml or 根据扫描路径生成BeanDefinition并注册到BeanFactory,相当于我们具备了生火做饭的原材料:BeanDefinition,接下来就是Spring最为核心的,根据BeanDefinition实例化Bean,并且对Bean的属性进行依赖注入 其
阅读全文
摘要:一丶前言 上篇Spring容器回调完所有的BeanFactoryPostPocessor,之后可以做到替换所有占位符,解析所有配置类等工作,这篇还会迎来一个Spring留给我们扩展的一个接口,涉及到Aop的实现 二丶注册BeanPostProcessor后置处理器 1.什么是BeanPostProc
阅读全文
摘要:一丶BeanFactoryPostProcessor是什么 Spring留给我们的一个扩展接口,在BeanDefinition加载注册完之后,并执行一些前置操作(笔记3)之后会反射生产所有的BeanFactoryPostProcessor实例并且回调对应的方法 可以做自定义的调整BeanDefini
阅读全文
摘要:一丶前言 笔记1和笔记2中我们分析了如何根据xml和注解加载生成BeanDefinition,并注册到BeanFactory,接下载便是Bean的加载,在加载之前会进行一些前置准备 二丶前置准备 和BeanPostProcessor 1.什么是BeanPostProcesser 翻译过来是Bean后
阅读全文
摘要:一丶前言 1.AnnotationConfigApplicationContext是什么 独立的应用程序上下文,接受组件类作为输入——特别是 @Configuration 注释的类,但也有普通的 @Component 类型和使用 javax.inject 注解的 JSR-330 兼容类。 允许使用
阅读全文
摘要:spring源码学习笔记1——解析xml生成BeanDefinition的过程解析 一丶Spring解析Xml生成BeanDefinition的流程 1.指定xml路径 解析xml首先需要知道xml的位置,如下我们构造了ApplicationContext ApplicationContext co
阅读全文
摘要:系列文章目录和关于我 volatile的原理和内存屏障参考《Java并发编程的艺术》 原子类源码基于JDK8 一丶volatile 与内存屏障 volatile修饰的字段,Java线程模型保证所有线程看到这个变量值是一致的。 1.volatile是如何保证可见性 volatile修饰的变量执行写操作
阅读全文
摘要:一丶什么是循环依赖 如图,如果用线条来表示bean之间的依赖关系,循环依赖会形成一个有向图,成环 二丶循环依赖解决的原理是什么 如果这个对象A还没创建成功,在创建的过程中要依赖另一个对象B,而另一个对象B也是在创建中要依赖对象A,这种肯定是无解的,这时我们就要转换思路,我们先把A创建出来,但是还没有
阅读全文
摘要:系列文章目录和关于我 一丶前言 前面我们分析了spring基于字段的和基于set方法注入的原理,但是没有分析第二常用的注入方式(构造器注入)(第一常用字段注入),并且在循环依赖问题上构造器注入常被说spring无法解决构造器注入的循环依赖,下面我们来分析构造器注入和其循环依赖的源码 二丶构造器依赖注
阅读全文
