Spring核心原理
文章平均质量分 85
spring学习专栏
向着百万年薪努力的小赵
当注意力专注于一件事上,岁月就会显得十分轻浮,快的有些过于浪荡——远近书疏,莫不手答,笔翰如流,未尝壅滞
展开
-
从Spring源码探究SpringMVC运行流程
随着不断地使用Spring,以及后续的Boot、cloud,不断的体会到这个拯救Java的生态体系的强大,也使我对于这个框架有了极大的好奇心,以至于产生了我为什么不能写一个这样的框架的思考。通过自学及参考谭勇德(Tom)老师的《Spring5核心原理》这本书,记录此系列博客。愿每个想探究Spring原理的人,学习道路一帆风顺。......原创 2022-07-22 09:49:32 · 38714 阅读 · 22 评论 -
从Spring源码探究AOP代码织入的过程
AOP是OOP的延续,是Aspect Oriented Programming 的缩写,意思是面向切面编程。可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术。AOP设计模式孜孜不倦追求的是调用者和被调用者之间的解耦,AOP可以说也是这种目标的一种实现。我们现在做的一些非业务,如︰日志、事务、安全等都会写在业务代码中(也即是说,这些非业务类横切于业务类),但这些代码往往是重复,复制今一粘贴式的代码会给程序的维护带来不便,AOP就实现了把这些业务需求与系统.....原创 2022-07-21 21:45:30 · 41064 阅读 · 0 评论 -
从Spring源码探究IOC初始化流程
从Spring2.0以后的版本中,Spring也引入了基于注解(Annotation)方式的配置,注解(Annotation)是JDK1.5中引入的—个新特性,用于简化Bean的配置,可以取代XML配置文件。而开发入员对注解(Annotation)的态度也是萝卜青菜各有所爱,个人认为注解可以大大简化配置,提高开发速度,但也给后期维护增加了难度。目前来说XML方式发展的相对成熟,方便千统—管理。随看SpringBoot的兴起,基于注解的开发甚至实现了零配置。............原创 2022-07-21 12:52:34 · 40946 阅读 · 15 评论 -
从Spring源码探究DI属性注入流程
当Spring loC容器完成了Bean定义资源的定位.载入和解析注册以后JoC容器中已经管理类Bean定义的相关数据,但是此时loC容器还没有对所管理的Bean进行依赖注入,依赖注入在以下两种情况发生:1)、用户第一次调用getBean()方法时,loC容器触发依赖注入。2)、当用户在配置文件中将元素配置了lazy-init=false属性,即让容器在解析注册Bean定义时进行预实例化,触发依赖注入。BeanFactory 接口定义了Spring loC容器的基本功能规范,是Spring loC容器所原创 2022-07-21 15:15:09 · 40670 阅读 · 2 评论 -
手写迷你Spring框架
Spring最初的时候,其功能远远不如现在强大,甚至我在看Spring最初版本的时候有种**这就是所谓的Spring?**的疑问,但随后便恍然大悟,我是站立在历史的下游,用后人的眼光去看前人的作品,当然有种站在制高点俯视的感觉,当我一步一步深入学习Spring的设计思想设计理念以及实现方式的时候,无不为前人那惊天地泣鬼神的思想所震撼。............原创 2022-07-20 21:08:52 · 18551 阅读 · 50 评论 -
Spring是如何解决循环依赖问题的及三级缓存的作用
前置知识:所谓的三级缓存只是三个可以当作是全局变量的Map,Spring的源码中大量使用了这种先将数据放入容器中等使用结束再销毁的代码风格Spring的初始化过程大致有四步我们说的循环依赖就是第四步在给Bean属性注入的时候发生的一个问题循环依赖就是:假设有两个类 A和B,A中需要注入B,B中需要注入A由于A注入B时B没有创建,B创建时A也无法创建导致的死循环问题我们都知道AOP是Spring的一个重要核心思想,其实现就是根据动态代理来实现的,也就是说我们的Bean其实很大概率都是要生成代理类,让原创 2022-07-05 15:34:41 · 61971 阅读 · 5 评论 -
Bean的生命周期(不要背了记思想)
你若是真的为面试而来,请把下面这段背下来,应付面试足矣Bean的生命周期主要是Bean的创建过程,使用和销毁都比较简单如上所说大致可以分为四个阶段:实例化 -> 属性赋值 -> 初始化 -> 销毁给出一个可以让你们看着去跟源码一步一步点下去的无敌图其实学习Bean的生命周期有这个图就足够了没有前置知识盲目的去学习Bean的生命周期,是没有任何意义的,或者说这只是为了应付面试而学没有使用场景,没有复习欲望,看完背完你能记多久呢?一周?一个月?你大学学的计算机网络你还记得吗(手动滑稽)在学习Bea原创 2022-07-05 14:50:12 · 29777 阅读 · 0 评论 -
Spring的IOC原理
我们都知道,在采用面向对象方法设计的软件系统中,它的底层实现都是由N个对象组成的,所有的对象通过彼此的合作,最终实现系统的业务逻辑。 如果我们打开机械式手表的后盖,就会看到与上面类似的情形,各个齿轮分别带动时针、分针和秒针顺时针旋转,从而在表盘上产生正确的时间。 图中描述的就是这样的一个齿轮组,它拥有多个独立的齿轮,这些齿轮相互啮合在一起,协同工作,共同完成某项任务。我们可以看到,在这样的齿轮组中,如果有一个齿轮出了问题,就可能会影响到整个齿轮组的正常运转。 齿轮组中齿轮之间的啮合关系,与软原创 2022-07-05 11:33:38 · 50285 阅读 · 0 评论 -
Spring容器启动、IOC、AOP、DI、用户请求流程详解以及循环依赖问题解决流程整体图
手写Spring之前先学思想,深入了解Spring源码和了解Spring详细的流程才能写一个Spring框架出来另外图里有Spring循环依赖问题解决的流程依赖注入的基本概念:Spring 设计的核心 org.springframework.beans包(架构核心是org.springframework.core包),它的设计目标是与JavaBean组件一起使用。这个包通常不是由用户直接使用,而是由服务器将其用作其他多数功能的底层中介。下一个最高级抽象是BeanFactory接口,它是工厂设计模式的原创 2022-04-26 17:51:11 · 440 阅读 · 0 评论 -
spring框架初探——每个包的作用
Spring简化开发四个基本策略1、基于POJO的轻量级和最小侵入性编程2、通过依赖注入和面向接口松耦合3、基于切面和惯性进行声明式编程4、通过切面和模板减少样板式代码打开我们任意一个Spring项目,可以看到里面有关Spring的包有很多它们都是什么意思,负责哪些功能呢?将其分成模块,让我们来看一看...原创 2021-09-14 17:20:39 · 222 阅读 · 0 评论