![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
spring
dragon@oo
糟糕的坚持也好过放弃
展开
-
Spring 4.x 源码系列6-循环依赖
一、前沿在 Spring 的 bean创建 文章中我们了解了bean创建的复杂过程,那篇文章中也讲了一些关于循环依赖的问题,循环依赖本是一个死循环无解难题,本文将通过demo示例来具体为大家分析 Spring 是如何解决这一无解难题的二、循环依赖定义循环依赖就是循环引用,也就是两个或者两个以上的 bean 相互之间的持有对方,比如说 A 引用 B,B 引用 C,C 引用 A,则它们之间...原创 2019-12-30 15:57:05 · 287 阅读 · 0 评论 -
Spring 4.x 源码系列5-bean的生命周期
一、前沿学习了 bean创建 和 bean加载 之后我们了解了 Spring IOC 容器对于托管对象bean的管理,bean的生命周期也完全有 Spring IOC 容器管理。Spring的ioc容器功能非常强大,负责Spring的Bean的创建和管理等功能。而Spring 的 bean 是整个Spring应用中很重要的一部分,了解Spring Bean的生命周期对我们了解整个spring框...原创 2019-12-24 15:16:32 · 230 阅读 · 0 评论 -
Spring 4.x 源码系列4-创建bean实例
创建bean实例(createBeanInstance 方法)AbstractAutowireCapableBeanFactory 的 createBeanInstance 方法实现了创建 bean 的实例,将 BeanDefinition 转换为 BeanWrapper,转换是一个复杂的过程,大致步骤如下:1)、如果存在创建bean的回调方法,则从回调方法获取bean实例 BeanWra...原创 2019-12-23 17:43:46 · 322 阅读 · 0 评论 -
Spring 4.x 源码系列3-bean创建
一、前沿在上节文章 bean加载 中我们学习了Sprin加载bean的整个过程,其中对于如何创建bean的我们没有讲解,本节将从 createBean 方法开始,阅读源码来了解bean的创建的整个过程,bean的创建是Spring中非常重要的模块,通过它可以了解Spring容器是怎么将bean创建出来的二、bean创建前奏bean 的创建是从 AbstractAutowireCapab...原创 2019-12-23 16:53:10 · 1375 阅读 · 0 评论 -
Spring 4.x 源码系列2-bean加载
一、前沿在上节文章 ApplicationContext refresh 刷新 中我们学习了Spring启动是如何将所有的bean实例化并加载的,其中我们只分析到了Spring将bean的定义转换为 BeanDefinition,并注册到 BeanFactory 中,后续的bean的实例化和初始化(bean的加载)我们没有讲解,我们将 bean 的实例化和初始化称之为 bean 的加载,本文将...原创 2019-12-16 16:27:08 · 247 阅读 · 0 评论 -
Spring 4.x 源码系列1-ApplicationContext refresh 刷新
一、前沿Spring 是java后台开发人员再熟悉不过的框架,其中有一个好处就是通过Spring提供的IoC容器,我们可以将对象之间的依赖关系交由Spring进行控制,避免硬编码造成程序耦合。有了Spring,用户不必再为单实例模式类、属性文件解析等这些很底层的需求编写代码,可以更专注于上层的应用,真正实现了写一次,可以到处运行的机制既然 Spring 是管理bean的容器,那么它是如何...原创 2019-12-11 18:02:28 · 644 阅读 · 0 评论 -
Spring 4.x 总体架构
一、架构图spring framework 总共分为三层,底层是核心层,包含 beans、core、context 和 expression(spel),中间层是封装的J2EE服务(企业层),包含aop、aspects、instrument 和 messaging,最上层是应用层,包含两部分,一部分是数据层,包含jdbc、orm、oxm 和 jms,两一部分是web层,包含web、webmvc...原创 2019-12-05 16:17:17 · 427 阅读 · 0 评论 -
Spring事务的隔离级别
一、前沿在学习Spring事务隔离级别之前,我们需要先掌握脏读、不可重复读和幻读的意思,因为Spring事务隔离级别中使用的就是这三者脏读(dirty read):脏读发生在一个事务读取了另外一个事务修改但未提交的数据。如果这些改变在稍后被回滚了,那么第一个事务读取的数据就是无效的不可重复读(non-repeatable read):不可重复读发生在一个事务执行两次或者两次以上相同的查...原创 2019-11-22 10:49:19 · 252 阅读 · 0 评论 -
Spring事务的传播属性
一、事务特性事务具有四个特点(ACID),如下:1)原子性:要不全部成功,要不全部撤销2)隔离性:事务之间相互独立,互不干扰3)一致性:数据库正确的改变状态后,数据库的一致性约束没有被破坏4)持久性:事务的提交结果,将持久保存在数据库中二、Spring事务传播源码Spring事务的传播特性定义在 TransactionDefinition 类中,源码如下:pac...原创 2019-11-22 09:51:35 · 262 阅读 · 0 评论 -
AOP实现原理
AOP实现共有两种方式,即AspectJ静态代理 和 AOP动态代理一、AspectJ静态代理1、AspectJ是静态代理的增强,使用AspectJ编译时增强实现AOP,它会在编译阶段将AspectJ织入java字节码中,需要特定的编译器2、代理对象和目标对象实现共同的接口,并且代理对象持有目标对象的引用二、AOP动态代理(JDK动态代理 和 CGLIB动态代理)S...原创 2019-06-25 18:30:04 · 1735 阅读 · 0 评论