自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 收藏
  • 关注

原创 Spring 源码学习(七)——注解后处理器-2

InitDestroyAnnotationBeanPostProcessor 类用于处理初始化与销毁注解;其中第一个属性为用于标识初始化方法与销毁方法注解类型的 initAnnotationType 与 destroyAnnotationType 属性、还有一个用于标识执行顺序的 order 属性,默认为最大值、用于缓存生命周期元数据的 lifecycleMetadataCache 及一个标识空生命周期元数据对象的 emptyLifecycleMetadata 属性;

2025-01-24 23:01:47 921

原创 Spring 源码学习(九)—— ConstructorResolver

对象使用 ConstructorResolver 对象进行对象的创建,该对象提供 autowireConstructor 、instantiateUsingFactoryMethod 与 resolveFactoryMethodIfPossible 三个方法分别用于使用构造方法创建对象、使用对象工厂方法以及尝试解析对象注册表的对象工厂方法。

2025-01-12 19:15:37 741

原创 Spring 源码学习(八)—— 对象工厂

AbstractBeanFactory 类为对象工厂的基类,其继承至 FactoryBeanRegistrySupport 类同时实现了 ConfigurableBeanFactory 接口;

2025-01-04 22:46:39 1320 3

原创 Spring 源码学习(七)——注解后处理器-1

通过之前对注解式配置的解析()可以发现其使用 AnnotationConfigUtils 类的 registerAnnotationConfigProcessors 静态方法对象注解后处理器对象进行注册;

2024-12-10 21:49:33 832 4

原创 Spring 源码学习(六)—— 对象作用域实现

从之前对注解类配置分析可以发现对象使用 AnnotationConfigUtils 类的 applyScopedProxyMode 方法为类为对象设置作用域,并在完成后返回设置完成后的 BeanDefinitionHolder 对象;该方法在 metadata 参数关联 scopedProxyMode 属性值为 ScopedProxyMode 中的 NO 枚举时直接不对 definition 参数做任何处理直接返回;

2024-11-24 16:31:52 990

原创 Spring 源码学习(五)—— 对象注册表(BeanDefinition)

AbstractBeanDefinition 抽象类拥有多个常量,可以分为 4 类,第一类只有一个用于存储默认作用域的 SCOPE_DEFAULT 字符串常量;

2024-11-23 16:50:20 1046

原创 Spring 源码学习(四)—— 类元数据解析

一 Metadata 元数据封装 Metadata 对象用于对类进行封装,其拥有 4 接口及 3 个实现类,其中StandardClassMetadata 与 StandardAnnotationMetadata 类用于封装普通非注解类,SimpleMetadataReader 类则用于封装注解类及用于封装方法的 SimpleMethodMetadata 与StandardMethodMetadata 类;1接口1.1 ClassMetadata 接口

2024-11-13 22:31:17 1058

原创 Spring 源码学习(三)—— 注解式配置解析

AbstractTypeHierarchyTraversingFilter 抽象类只有两个使用 final 修饰的属性,分别为匹配时是否考虑匹配父类或接口的 considerInherited 与 considerInterfaces 属性;AbstractClassTestingTypeFilter 抽象类实现了 match 方法,其直接获取 metadataReader 参数的 ClassMetadata 原始参数并使用该对象执行单一参数的 match 方法;

2024-10-30 21:14:30 875

原创 Spring 源码学习(二)—— xml 配置解析

从之前对 Spring 基本上下文进行分析(Spring 源码学习(一)—— spring 上下文概览-优快云博客)我们可以发现对 XML 配置读取与解析,无论是 AbstractXmlApplicationContext 抽象类还是 GenericXmlApplicationContext 类都是通过 XmlBeanDefinitionReader 类进行的;同时从对下面 XmlBeanDefinitionReader 类的继承图的分析可以看到 XmlBeanDefinitionReader 类直接继承

2024-10-24 22:18:37 802

原创 Spring 源码学习(一)—— spring 上下文概览

ResourceLoader 接口所定义的功能为对资源进行处理,其拥有一个字符串常量 CLASSPATH_URL_PREFIX 与两个方法;其中 CLASSPATH_URL_PREFIX 常量值为 classpath:,作用为替换配置文件中替代文件的类路径前缀,getResource 方法获取指定位置的 Resource 对象及 getClassLoader 方法则是获取所使用的类加载对象。@Nullable。

2024-10-12 21:54:17 1013

原创 Mybatis源码学习(七)——ResultSetHandler 结果处理

ResultSetWrapper 类属性可以分为三类,第一类是 ResultSet 对象及其衍生属性,其中 resultSet 属性为内部封装 ResultSet 对象、columnNames 属性为结果集字段名列表、jdbcTypes 为结果集字段数据库类型列表、classNames 为结果集字段全限定类名列表;第二类为 mybatis 关联属性,只有设置的类型处理器注册属性 typeHandlerRegistry;

2024-09-29 22:10:31 1352

原创 Mybatis源码学习(六)——sql 字符串获取及参数设置过程

从之前对 StatementHandler 类(Mybatis源码学习(五)——StatementHandler-优快云博客)的分析可发现 mybatis 使用 BoundSql 对象获取 sql 字符串,而 BoundSql 对象的获取则是使用 MappedStatement 参数的 getBoundSql 方法; getBoundSql 方法中首先调用 SqlSource 属性中的 getBoundSql 方法获取 BoundSql 对象,若 BoundSql 对象中的 paramete

2024-09-22 15:41:33 1568

原创 Mybatis源码学习(五)——StatementHandler

StatementHandler 类为 mybatis 执行 Statement 对象核心类,从之前的 Executor 的解析中可以看出所有与数据库交互的方法底层都是通过 StatementHandler 对象与其进行交互;因此为了继续探索 mybatis 与数据库的交互过程,本文将继续对 StatementHandler 进行分析。

2024-09-15 22:14:18 1704

原创 Mybatis源码学习(四)——Executor

根据之前对 SqlSession 类的分析()可以发现 SqlSession 与数据库交互的方法都是通过 Executor 对象进行;因此首先对 Executor 接口进行分析,看其拥有什么方法;第一步我们可以发现 Executor 接口拥有一个 ResultHandler 的常量,但其值却为 null,起作用之后再详述;

2024-09-13 22:08:31 1185

原创 Mybatis源码学习(三)——接口代理(MapperProxy)

使用过 Mybatis 框架的人都很好奇接口方法的实现逻辑及具体方法执行逻辑,因此本篇文章从接口对象的获取开始,最后对方法执行逻辑对框架逻辑进行解析。

2024-09-09 20:30:33 1145

原创 Mybatis源码学习(二)——SqlSession

sqlSession 中有 4 组不同的查询方法,即查询单个结果集的 selectOne 方法、使用指定字段对结果集进行标识的 selectMap 方法、获取指定结果集指针的 selectCursor 方法、查询多个结果集的 selectList 方法以及不返回结果直接使用 ResultHandler 对处理结果集的 select 方法;与其他方法一样,事务相关的方法底层也是通过调用 executor 中的相关方法实现对事务的管理的,在对事务进行操作之后,将 dirty 初始化为 false;

2024-09-04 22:58:28 1032 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除