为什么学习spring

为什么要学spring源码

为什么要学spring源码?相信很多人心里有过这样的疑惑,甚至还有读者说他在工作中用的都是springboot从来没用过spring这样的笑话。实际上,对于JAVA程序员,我们的工作开展基本不可能离开spring。

学习spring源码有不少好处:

  • spring的框架涵盖大量经典的设计模式,在阅读的过程中可以吸取优秀的编程思想,提高我们的编码素养,设计能力。
  • 在工作中经常需要封装一些公共SDK组件,沉淀一些通用方法,这也是一个程序员进阶的体现。这时候基本离不开和spring底层框架打交道。通过阅读源码能直接提升工作中问题排查的思路,和解决问题的能力。
  • 说个功利点的角度,面试的时候面试官都会问你,最近有阅读哪些源码。而spring源码,正是程序员之间惺惺相惜的一个最好的引子。

我是怎么学的

spring源码高达70w行,而我们只需要专注核心的功能实现即可。我会在之后的文章告诉大家,哪些是重点,而哪些只需要了解即可。学习的过程中需要保持不求甚解的心态。

踩坑之路

记忆中,断断续续学过spring源码3次,每一次的收获都不一样。就像以前每次碰到vn周免我都会尝试去玩一玩,但是总玩不好。等我500场后,都不需要刻意练习,我就能用vn大杀四方。

不同的阶段,学习和理解能力是不同的。我们千万别急躁的非要去深究我们不懂的部分,也许几个月后,再来回顾,结果会让你惊讶

第一次学习spring源码,那时候我还没毕业,才学到javase,但我早就听说了spring的大名。那晚我到图书馆拿了一本spring书籍就阅读了起来,但仅仅不到一个小时,我就选择了放弃这本晦涩难懂的书。那晚,我只记住了ioc和控制反转这两个关键词。

第二次学习spring源码,是在我工作了一年后。对spring的使用已经有了一定的经验,当时兴致勃勃的准备开始阅读,结果发现spring中有大量优秀的设计模式,虽然我能很艰难的看懂一些,但是感觉是对源码和时间的糟蹋。于是我花了两周先去学了设计模式。当我再回过头来看源码,那些优秀的设计模式,竟然直接能够给我启发性的思考,像是达到了颅内高潮,竟然能有这么巧妙的设计。以至于在后面的面试中,我能经常和面试官提起spring中优秀的设计模式。但是对于spring bean的实例化流程,以及大量的生命周期钩子函数,我还是一知半解。错综复杂的类和继承、组合关系,让我望而却步。

第三次学习spring源码,是在我工作了三年。工作中用过了大量的生命周期钩子函数,为了写底层SDK,查阅了不少资料,也吃了不少不了解sping的亏。当我再次学习spring,我发现我悟了,那些错综复杂的关系,我竟然能很快理出来,还开始用笔记去整合,去分类的记录相应的重要知识点。我知道,学spring的最佳时刻已经到来。就是现在!

学习路线

在阅读spring源码前,你需要确认你已经在工作中遇到了大量与spring打交道的场景,对spring的背景,能做的事都有个大致的了解。另外,你需要先掌握Gof 23种设计模式(看我之前的设计模式文章)带着这些欣赏美的能力去阅读源码,你能有更多的收获。

资料推荐

在朋友的安利后,我先在github上看了一个tiny-spring的项目,这个项目用了10个工程,从0到1的用最小单元的方式搭建了spring的核心功能,这样我们可以更专注功能的实现逻辑,而不会被其他无关代码所影响

tiny-spring是为了学习Spring的而开发的,可以认为是一个Spring的精简版。Spring的代码很多,层次复杂,阅读起来费劲。我尝试从使用功能的角度出发,参考Spring的实现,一步一步构建,最终完成一个精简版的Spring。有人把程序员与画家做比较,画家有门基本功叫临摹,tiny-spring可以算是一个程序的临摹版本-从自己的需求出发,进行程序设计,同时对著名项目进行参考。

学spring,当然得知道spring有哪些功能,再根据功能去查看实现的源码。针对spring的功能这一块,我看的是B站雷丰阳spring 雷神的名号大家有目共睹,把我们常用了spring功能都说的非常详细,其中还附带了一些源码讲解

工欲善其事,必先利其器。学习spring源码,当然要构造一个源码阅读的环境。我们可以直接用maven引入spring。也可以去下载中文的源码包,这样自己也能进行一些额外的注释和源码改动。但是源码是gradle环境,构建起来可能会比较复杂,大家量力而行

当然这些仅仅是刚刚开始,想阅读源码,我还参考了不少的视频。其中一些很不错的视频

  • 咕泡学院的spring源码章节
  • 鲁班学院子路老师的spring源码
  • 极客时间小马哥的spring系列课程(200多节非常详细)

内容概览

一个bean的生成包括了大量的步骤,而我的文章应该也会围绕这些步骤当中的每个核心,去展开说明吧。

  • 🔲BeanDefinition的定义元信息的解析(xml,properties,java注解)
  • 🔲Bean IOC的生命周期及钩子函数
  • 🔲BeanFactory和ApplicationContext的区别
  • 🔲Spring AOP的全流程
  • 🔲后续的等我学到,持续更新。。。
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
学习Spring框架时,以下几个方面是值得关注和学习的: 1. Spring核心概念和特性:了解Spring框架的核心概念,如控制反转(IoC)、依赖注入(DI)、面向切面编程(AOP)等。理解这些概念对于正确使用和理解Spring框架非常重要。 2. Spring框架模块:Spring框架由多个模块组成,每个模块都有不同的功能和用途。学习和掌握常用的模块,如Spring Core、Spring MVC、Spring Data等,可以帮助你更好地开发和管理应用程序。 3. Spring Boot:Spring Boot是基于Spring框架的快速开发框架,它提供了自动化配置和约定优于配置的方式,简化了Spring应用程序的开发和部署。学习Spring Boot可以帮助你更高效地构建和管理Spring项目。 4. 数据访问:学习使用Spring框架的数据访问模块,如Spring JDBC、Spring Data JPA等,以及与数据库交互的最佳实践。这将使你能够更好地处理数据持久化和数据库操作。 5. Web开发:掌握使用Spring MVC模块进行Web开发的基本知识,包括处理请求和响应、路由、视图解析等。此外,了解和使用Spring Security模块可以帮助你实现应用程序的安全性。 6. 测试和调试:学习使用Spring框架提供的测试和调试工具,如JUnit和Spring Test,以及Mockito和Spring MockMvc等。这些工具可以帮助你编写单元测试和集成测试,并提高代码质量和可维护性。 总之,学习Spring框架需要对其核心概念、各个模块的功能和用法有深入的了解。通过实际项目的实践和不断学习,你将能够熟练地使用Spring框架开发高质量的应用程序。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值