Spring源码分析
文章平均质量分 92
专注于对spring源码功能分析,一方面是对spring的深入掌握,另一方面是对自身技术能力的提升
进击的猫
你知道的越多,你不知道得越多。。。。。。
展开
-
Spring源码分析九:事务原理源码分析
(一)spring事务入口(二)Spring事务切入方式InfrastructureAdvisorAutoProxyCreator自动代理器、InfrastructureAdvisorAutoProxyCreator层级示意图、获取增强器getAdvicesAndAdvisorsForBean、获取增强器findCandidateAdvisors、匹配增强器findAdvisorsThatCanApply、事务标签提取、 解析事务标签(核心)、事务增强器(事务实现原理)等.........原创 2022-07-18 22:56:07 · 283 阅读 · 0 评论 -
Spring源码分析番外篇二:事务原理番外篇
(1)创建事务实例,使用DataSourceTransactionManager作为创建类型,有点类似JDBC创建事务实例。值得注意的是:`当前线程存在数据库连接,直接复用,否则创建新的连接,并验证是否开启保存点设置,嵌入式事务时使用;`* (2)判断是否已存在事务,若存在嵌套事务逻辑处理即`handleExistingTransaction方法;`* (3)事务超时验证即TransactionDefinition.TIMEOUT_DEFAULT默认为-1;* (4)事务的传播行为设置即Propaga原创 2022-07-18 22:42:44 · 263 阅读 · 0 评论 -
Spring源码分析八:Mybatis ORM映射框架原理
2、建立PO3、建立mapper接口映射4、建立Mybatis配置文件5、建立mapper映射文件6、测试类输出结果:7、Mybatis编写程序小结(1)创建数据库表;(2)建立java实体PO;(3)Mapper业务接口定义;(4)编写mapper文件映射;(5)mybatis配置数据源、执行环境参数、别名、mapper文件引入;(6)创建SqlSessionFactory、SqlSession和获取数据库连接,集成到spring中时会自动执行,不需要手动去编写。(原创 2022-06-01 15:03:44 · 688 阅读 · 2 评论 -
Spring源码分析七:JdbcTemplate连接数据库原理
文章目录(一)Spring连接数据库程序1、创建数据库表2、创建实体PO3、创建mapper映射4、创建业务接口5、创建业务接口实现类6、Spring配置文件7、测试类(二)JdbcTemplate核心原理1、update方法(执行DML语句)2、execute底层方法(底层核心,DDL)(1)获取数据库连接(2)用户查询参数设置(3)执行回调方法(4)告警处理(5)资源释放3、query方法(执行DQL语句)(三)总结(一)Spring连接数据库程序1、创建数据库表CREATE TABLE `stu原创 2022-05-25 14:56:29 · 1057 阅读 · 0 评论 -
Spring源码分析六:Bean加载之populationBean③
文章目录(一)序言(二)bean属性注入:populateBean1、属性注入代码逻辑:populateBean2、属性注入整体流程(三)属性注入中的核心方法1、按名称注入:autowireByName2、按类型注入:autowireByType(较复杂)3、匹配类型bean:(do)resolveDependency(doXX核心)4、依赖注入:applyPropertyValues(四)属性注入总结(一)序言在spring源码分析加载bean之doGetBean②分析里面doCreateBean中简原创 2022-05-20 11:53:29 · 360 阅读 · 0 评论 -
Spring源码分析五: Bean加载之doGetBean②
文章目录(一)序言(二)非延迟bean加载——doGetBean1、规范化beanName:transformedBeanName2、三个缓存中获取bean实例:getSingleton3、递归获取bean:getParentBeanFactory4、优化缓存bean:markBeanAsCreated5、depends-on依赖实例化:isDependent6、创建bean:createBean(1)实例化前和初始化后的后置处理器(1)InstantiationAwareBeanPostProcessor原创 2022-05-09 20:18:59 · 458 阅读 · 1 评论 -
Spring源码分析四:Bean加载总览①
文章目录(一)序言(二)Spring初始化非延迟加载单例入口1、初始化非延迟加载单例bean准备:finishBeanFactoryInitialization2、实例化单例bean:preInstantiateSingletons(三)Spring Bean加载1、非延迟bean加载:doGetBean(四)非延迟加载bean流程(一)序言在Spring源码分析容器篇(http://t.csdn.cn/kjsnI)中初始化非延迟加载单例finishBeanFactoryInitialization中提原创 2022-05-07 17:40:05 · 394 阅读 · 0 评论 -
Spring源码分析三:Bean标签解析之BeanDefinition
文章目录(一)序言(二)Spring生成BeanDefinition1、Spring Bean解析入口2、Spring Bean内置标签解析(1)bean标签解析——processBeanDefinition方法(2)bean元素解析——parseBeanDefinitionElement方法(核心)①创建AbstractBeanDefinition实例②spring内置硬编码处理③解析元数据④解析lookup-method⑤解析replaced-method⑥解析构造函数参数⑦解析property子元素⑧原创 2022-05-03 23:44:59 · 557 阅读 · 0 评论 -
Spring源码分析番外篇一:AOP
文章目录(一)AOP获取增强方法1、getAdvisors获取增强方法(核心)2、canApply方法:匹配实际bean业务的增强器序言本文主要是对Spring源码分析三:AOP篇做一个补充,因AOP篇幅受限,一些比较具体实现逻辑不能一一罗列,故新增加AOP补充篇一继续分析Spring源码AOP的实现逻辑。(一)AOP获取增强方法在Spring源码分析三中已提到AnnotationAwareAspectJAutoProxyCreator->findCandidateAdvisors->b原创 2022-04-26 16:37:36 · 699 阅读 · 0 评论 -
Spring源码分析二:AOP篇
(一)spring Aop概念spring aop简称面向切面编程,不同于OOP即面向对象编程,OOP作为开发业务时,如需要引入安全检测、系统日志、监控等功能时,每个对象都需要引入公共代码,会造成不可维护和冗余代码,AOP的横空出世,正是为了解决OOP纵向的继承关系,AOP关心的是横向切面关系,在某一时刻进行切入,执行一些额外的逻辑。本文不对较低的sprig aop版本进行分析,直接从spring支持@AspectJ开始进行分析,该注解中主要是在切面中定义一个切点和切入点即可。(二)Spring A原创 2022-04-25 15:10:21 · 887 阅读 · 0 评论 -
Spring源码分析一:容器篇—refresh()
文章目录(一)BeanFactory与ApplicationContext容器(二)ApplicationContext层次结构(一)BeanFactory与ApplicationContext容器BeanFactory是加载Bean的基础基石,早期spring的实现是利用XmlBeanFactory来实现其基本功能,相对于ApplicationContext来说,缺少了很多扩展性。BeanFactory beanFactory = new XmlBeanFactory(new ClassPath原创 2022-04-10 03:26:37 · 781 阅读 · 0 评论 -
Spring源码分析——汇总全集
spring源码分析、专注于容器IOC、AOP实现原理,主要用于分析spring工作原理的汇总一、背景本篇文章主要是记录Spring源码分析文章汇总的目录,用于记录Spring源码的思路和步骤,为Spring源码分析文章做链接跳转,后面会持续更新。主要来源:一方面阅读《Spring源码深度解析-郝佳.pdf》,另一方面是结合Spring源码编译后的项目代码进行整理和总结。二、源码分析目录(1)Spring源码分析一:容器篇......原创 2022-05-07 17:57:38 · 628 阅读 · 0 评论 -
Spring源码编译【idea】
文章目录1、github安装2、gradle安装3、spring源码4、配置源码编译环境5、编译spring源码6、idea导入spring源码7、idea编译spring1、github安装先安装github,点击此链接可下载Git:Git下载 直接点击安装并使用默认设置直到安装完成。2、gradle安装安装gradle gradle官网 选择指定的版本下载(1)官网地址打开后,找到下图中的下载(2)自行选择自己的版本可下载,me选择的是5.6.4版本(3)下载解压后,配置环境变量紧原创 2022-02-08 18:06:21 · 1432 阅读 · 3 评论 -
Spring Bean 基础使用篇
文章目录1、自动装配2、声明Bean和属性注入3、限定自动装配4、bean的作用域1、自动装配@Autowired自动装配(1)放置在类成员变量上;@AutowiredPlayerService playerService;(2)放置在构造函数上(构造器本身会自动注入,可不加该注解);@Autowiredpublic PopPlayerServiceImpl(PlayerService playerService){ this.playerService = playerSe原创 2022-01-28 15:30:52 · 907 阅读 · 0 评论