spring源码探索-架构简述
一、为什么要探索spring
spring作为一个广为人知的java框架,相关的介绍烦不胜数。spring对于java程序员来说,个人觉得可以作为一个必知的技术基础,也是面试必问的一个知识点。工作这么久一直没有好好的去看过这个框架,实属惭愧,接下来准备做一个系列的学习探索。
二、看源码的姿势
看一个框架的源码个人觉得最好有下面几个前提,这样看源码会轻松些
1.用过
知道常用的姿势这样看源码的时候才知道它是实现哪块功能的
2.知其原理
先去网上看看对要研究的框架的原理介绍,这样看源码会有个方向,不至于像无头苍蝇般乱撞
3.跟着牛人一起看源码
这个点有则更佳,没有也没关系,无非是增加了源码的阅读难度。一般框架的源码很多,如果自己一头扎进去开始看,势必需要自己抽丝剥茧,需要耐得住性子,是一个很磨炼人的活。所以如果能跟着网上大牛相关的源码解析文章或者书籍来看源码,势必事半功倍。
三、请开始你的表演
好了,现在开始步入正题,本篇作为一个概述性文章,源码探索放在后续文章持续产出,本文主要分为下面几个点
spring的特点
1.方便解耦,简化开发
通过Spring提供的IoC容器,我们可以将对象之间的依赖关系交由Spring进行控制,避免硬编码所造成的过度程序耦合。有了Spring,用户不必再为单实例模式类、属性文件解析等这些很底层的需求编写代码,可以更专注于上层的应用
2.AOP编程的支持
通过Spring提供的AOP功能,方便进行面向切面的编程,许多不容易用传统OOP实现的功能可以通过AOP轻松应付。
3.声明式事务的支持(AOP的一个实现)
在Spring中,我们可以从单调烦闷的事务管理代码中解脱出来,通过声明式方式灵活地进行事务的管理,提高开发效率和质量。
4.方便集成各种优秀框架
Spring不排斥各种优秀的开源框架,相反,Spring可以降低各种框架的使用难度,Spring提供了对各种优秀框架(如Struts,Hibernate、mybatis)等的直接支持。
5.降低Java EE API的使用难度
Spring对很多难用的Java EE API(如JDBC,Redis client)提供了一个薄薄的封装层,通过Spring的简易封装,这些Java EE API的使用难度大为降低。
spring架构一览
spring两大核心
IOC-spring的基石
Core Container里 spring-core
和 spring-beans
包含了IOC的具体实现和依赖注入特性
AOP
基于JVM动态代理/CGLIB的基础上实现了AOP框架,是我们的切面功能更加丰富。我们常用的事务控制就是基于AOP来实现的
Data Access/Integration
数据访问和集成,比如场景JDBC的实现、ORM框架的集成(mybatis)、消息、事务等
WEB
提供了web相关特性,常见的springMVC就是这个模块的具体实现
其它具体介绍可参考 https://docs.spring.io
后续计划
spring的源码很经典也多,有必要看但也没有一股脑全部去看的必要,毕竟时间有限,我计划从下面几个方向去学习
1.spring IOC 实现探索
2.spring AOP 实现探索
3.spring AOP 之事务的具体实现
四、结尾
本文主要介绍了,为什么看spring源码,怎么看源码并对spring做了简答的介绍,以及后续的研究方向,欢迎大家持续关注。