一、Spring框架简介和学习经验

一、Spring概览

1、作者介绍

Spring Framework创始人Rod Johnson。 Rod在悉尼大学不仅获得了计算机学位,同时还获得了音乐学位。更令人吃惊的是在回到软件开发领域之前,他还获得了音乐学的博士学位,经历很丰富,是一个具有创造性的大神。

Spring这个开源的生态圈,是真的牛逼,可以说目前大部分工业级的Java软件开发基本离不开Spring,使用了Spring可以减少非常多的样板代码,程序员可以更关注业务本身的逻辑。

2、Spring架构概览

Spring架构概览

在官网截取了Spring框架架构图,在上述图中Core Container是Spring的核心模块,也是Spring最关键的核心模块。

Core Container包含beans、core、context和expression(SpEL)。除去Core Container模块之外,AOP模块是属于Spring体系的第二大重点模块,大部分其他增强类组件都是基于AOP来实现的。

在我的日常开发过程中,经常会使用AOP的技术去做一些小工具,如任务线程独立的日志ID分配,可以使得查看或检索日志时通过独立的ID检索出请求全链路的日志,或者是基于AOP实现自定义Redis注解方法返回值缓存,减少代码逻辑层面的侵入型,又或者是开发方法监控信息等组件。

3、Spring源码阅读感悟(一人之见)

Spring框架的源码阅读起来很困难,由于在框架中大量使用了模版方法模式,使得代码阅读时需要熟记各个类之间的继承关系。基础类定义模版方法并开放子类实现方法,子类继承父类实现父类开放的方法。这样的设计实现固然对开扩展很友好,但是在阅读时会比较吃力。

Spring虽然继承结构复杂,但是读过之后会有很多值得我们编码借鉴的地方,其中运用了多种设计模式,模版设计模式,装饰者设计模式等。

Spring框架如果仅仅是在使用层面,大家百度一些注解的使用即可。如@Service、@Controller、@Component、@Bean、@PostConstruct、@Import、@Resource等。使用起来简单有效。如果期望基于Spring去开发一些底层的工具,就需要了解其原理,以便于你开发的工具可以更好的配置在其他的项目之中。

小提示:日常code review中经常会提到 “常规的一些基础类工具,强制使用Google、Apache权威的开源社区的开发的工具” ,这会联想到上方重复造轮子的事情,善用权威的开源框架可以让自己的代码更简单更健壮。

二、Spring环境搭建

1、源码环境搭建

  1. 阅读源码需要一个IDE,推荐当下最火的Intelj IDEA。

  2. JDK的版本推荐选择1.8版本。

  3. 下载Spring源码,提供一下我在学习Spring的时候的源码项目下载地址。
    https://github.com/muzi-code/spring-ecological-technology

  4. IDEA导入代码,安装Gradle 4.4.1,使用gradle -version来查看是否安装成功。

上面我的代码是我处理过的,可以编译通过。

2、我的源码项目介绍

2.1 项目介绍

项目包含

  1. Spring-Framework 源码项目
  2. spring-framework-exercise 学习项目

2.2 个人源码学习经验

关于Spring源码分析,实际上就是先使用Spring支持的Bean标签的一些属性,尝试在Spring容器初始化过程中DEBUG,跟着代码执行流程把相关的源代码过一遍,并加上一些自己的注释。反复的通过尝试没用过的属性和没用过的功能去DEBUG,看流程,理论和实践相结合,肯定会有所收获。

正常看Spring源码的时候可能看看就会忘就会枯燥,无趣的很。不过通过写一些功能的代码案例,点点累积,直至看完一整遍后,自身对Spring框架的掌握就会上一个层次。时至目前我看过很多遍Spring代码,但是一些业务代码我也不知其意。

不求甚解,每有会意便欣然忘食,才是阅读Spring源码的心态。

我的源码项目中包含spring-framework-exercise这个练习项目,练习项目中包含了我学习Spring的很多练习,时至今日有一些功能开发我还要借鉴我曾经的练习Demo。

三、总结

其实Spring项目就算学的超级NB,摸清了每一行的代码的逻辑,它也不能让你的技术有很大的提升(提升肯定是有的,因为现实就是很多人不是很会Spring的高级应用),但是可以让你的Spring项目看起来更舒服(懂的人都懂)。

习武之人有内功和外功的区分,程序员的提升也分内外,内在主要是设计思想和编码能力,外在体现就是跟随技术的发展,善用最新的框架或中间件。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值