![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
spring源码
文章平均质量分 70
南猫信巷
这个作者很懒,什么都没留下…
展开
-
Spring5源码分析(5)----循环依赖源码分析
0.前置内容相关文章链接: Spring5源码分析(4)----循环依赖原理分析1.循环依赖流程图假设instA依赖instB,instB又依赖instA,那么在代码中的调用流程如下图:2.doGetBean方法 protected <T> T doGetBean( String name, @Nullable Class<T> requiredType, @Nullable Object[] args, boolean typeCheckOnly) thro原创 2021-09-21 16:48:37 · 116 阅读 · 0 评论 -
Spring5源码分析(4)----循环依赖原理分析
1.什么是循环依赖?所谓的循环依赖是指,A 依赖 B,B 又依赖 A,它们之间形成了循环依赖。或者是 A 依赖 B,B 依赖 C,C 又依 赖 A。它们之间的依赖关系如下:2.一级缓存和二级缓存原理分析2.1 一级缓存的作用我们可以简单手写实现下创建bean的过程,如下:重点关注getBean方法,过程已在注释中标明。@Componentpublic class InstanceA { @Autowired private InstanceB instanceB;}@原创 2021-09-21 16:48:08 · 105 阅读 · 0 评论 -
Spring5源码分析(3)----后置处理器ConfigurationClassPostProcessor
ConfigurationClassPostProcessor原创 2021-09-21 16:46:40 · 65 阅读 · 0 评论 -
Spring5源码分析(2)----spring IoC容器的加载过程
1.实例化容器:AnnotationConfigApplicationContext这里主要分析注解形式的源码,我们启动容器的时候,虽然只是new了一个AnnotationConfigApplicationContext对象,但是在这个过程中spring处理了很多的事情。AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(SpringConfig.class);AnnotationCo原创 2021-09-12 22:38:29 · 111 阅读 · 0 评论 -
Spring5源码分析(1)----spring源码编译
1.下载Spring源码GitHub Spring源码下载链接: https://github.com/spring-projects/spring-framework.注意:下载的时候选择branch和对应的tag,下载RELEASE版本的,这种是正式版,稳定性更好,M1,M2,…中的M是milestone的意思,意思是里程碑,代表着有重大改进的版本。用git克隆或者直接下载zip包,我一般都是用spring-framework-5.1.20.RELEASE。由于5.1.20版本的源码,我之前很早就编原创 2021-09-11 23:22:10 · 914 阅读 · 0 评论 -
手写IOC和AOP(四)----动态代理改造事务控制
代理模式分为静态代理和动态代理,我们先以一个例子来回顾这两种代理模式的使用。静态代理:静态代理,有点类似于装饰设计模式。静态代理是一种编译期增强,还没运行就已经知道增强的目标对象。装饰设计模式是运行时增强,只有运行时才知道具体增强的目标。以租房举例,我们可以自己去找房源去租房子,也可以通过中介去租,这里的我们也就是租房的客户就是委托者,中介就是一个代理者。作为客户,我们需要将自己的需求告知中介,作为中介,需要提供一个客户访问或接入的方式,得需要客户能找到你。站着两者的角度,他们最终目的都需要干一件事-原创 2021-08-18 23:21:19 · 98 阅读 · 0 评论 -
手写IOC和AOP(三)----添加事务控制
问题:转账案例中,service层只是简单的实现了转账过程中变更数据库数据的操作,并没有进行相关的事务控制。如果在两个更新账户信息方法中间添加一个异常,第一个更新方法正常执行,而第二个方法则不会执行,造成了数据的不一致性。所以我们需要对业务处理过程添加事务控制,保证其满足事务的ACID原则。 accountDao.updateAcctByCardId(fromAcctInfo); int i = 1 / 0; accountDao.updateAcctByCardId(toAcctInfo);问原创 2021-08-11 23:05:21 · 143 阅读 · 0 评论 -
手写IOC和AOP(一)----转账案例原型
这里以一个转账的例子原型开启手写IOC和AOP过程。原型代码是按三层架构模型来写的,controller层采用的是servlet,dao层采用jdbc来实现的,此代码中只是简单的模拟了转账的过程,中间存在的问题点,在后面会去分析以及改进。代码结构如下:前台页面:在页面中对账户信息给定了默认值,对应数据库中的账户信息,我们可以自定义转账的金额。采用ajax指定发送url地址和发送的数据,返回结果采用json格式进行接收并根据返回的结果码信息以弹出框的形式给出转账结果的提示。<script原创 2021-08-08 01:42:41 · 183 阅读 · 0 评论