初学SpringBoot框架时,第一次启动服务,直呼什么鬼?只需要简单的几步配置,几个核心的注解,就可以快速实现工程的搭建和运行;
虽然从Spring框架迁移到SpringBoot框架,在初期会有很多的不适应,但是更好用的框架会快速得到认可,从而成为主流的技术选型;
对于大多数的框架或者组件来说,如果使用起来越是简便,那么其内部的封装策略就越是复杂;
比如在Spring框架更新到SpringBoot版本时,其用法的简便与内部封装的复杂性已经形成强烈的对比;再到SpringCloud微服务框架时,其封装逻辑复杂到离谱;
对于服务端的开发来说,绕不开对Spring框架的深度学习,如果单纯站在源码阅读的角度,建议先熟读SpringBoot启动流程,然后再适当扩展其他源码块;
问题来了
为什么 Spring 天天用,但要想去读一读源码,怎么就那么难!因为由Java和J2EE开发领域的专家
Rod Johnson 于 2002 年提出并随后创建的 Spring 框架,随着 JDK 版本和市场需要发展至今,至今它已经越来越大了!
当你阅读它的源码你会感觉:
- 怎么这代码跳来跳去的,根本不是像自己写代码一样那么
单纯
- 为什么那么多的接口和接口继承,类A继承的类B还实现了类A实现的接口X
- 简单工厂、工厂方法、代理模式、观察者模式,怎么用了会有这样多的设计模式使用
- 又是资源加载、又是应用上下文、又是IOC、又是AOP、贯穿的还有 Bean 的声明周期,一片一片的代码从哪下手
怎样,这就是你在阅读 Spring 遇到的一些列问题吧?其实不止你甚至可以说只要是从事这个行业的码农,想读 Spring 源码都会有种不知道从哪下手的感觉。所以我想了个办法,既然 Spring 太大不好了解,那么我就尝试从一个小的 Spring 开始,手撸 实现一个 Spring 是不是可以理解的更好,别说效果还真不错,在花了将近2个月的时间,实现一个简单版本的 Spring 后
现在对 Spring 的理解,有了很大的提升,也能读懂 Spring 的源码了。
这里分享一份Spring(第2版)源码深度解析,总结了一些研究心得和实际项目经验,也希望能对正在Spring道路上摸索的同仁提供一些帮助。
内容介绍
从核心实现、企业应用和Spring Boot这3个方面,由浅入深、由易到难地对Spring源码展开了系统的讲解,包括Spring 整体架构和环境搭建、容器的基本实现、默认标签的解析、自定义标签等等~
同时,不仅介绍了使用Spring框架开发项目必须掌握的核心概念,还指导读者使用Spring框架编写企业级应用,并针对在编写代码的过程中如何优化代码、如何使得代码高效给出了切实可行的建议,从而帮助读者全面提升实战能力
核心实现篇
这一部分是Spring 功能的基础,也是企业应用部分的基础,主要对容器以及AOP功能实现做了具体的分析。如果大家之前没有接触过Spring源代码,建议认真阅读这个部分,否则阅读企业应用部分时会比较吃力。
- 容器的基本实现
- 默认标签的解析
第5章bean的加载,
经过前面的分析,我们终于结束了对XML配置文件的解析,接下来将会面临更大的挑战,就是对bean加载的探索。bean 加载的功能实现远比 bean的解析要复杂得多,同样,我们还是以本书开篇的示例为基础,对于加载bean的功能,在Spring中的调用方式为:
第7章AOP
Spring,声明式事务让我们从复杂的事务处理中得到解脱,使我们再也不需要去处理获得连接、关闭连接、事务提交和回滚等操作,再也不需要在与事务相关的方法中处理大量的try...catch...finally 代码。Spring 中事务的使用虽然已经相对简单得多,但是,还是有很多的使用及配置规则,有兴趣的读者可以自己查阅相关资料进行深入研究,这里只列举出最常用的使用方法。
同样,我们还是以最简单的示例来进行直观地介绍。
企业应用篇
在核心实现部分的基础上围绕企业应用常用的模块进行讨论,这些模块包括Spring 整合JDBC、Spring 整合MyBatis、事务、SpringMVC、远程服务、Spring 消息服务等,旨在帮助读者在日常开发中更加高效地使用Spring。
- 整合MyBatis
第10章事务
Spring声明式事务让我们从复杂的事务处理中得到解脱,使我们再也不需要去处理获得连接、关闭连接、事务提交和回滚等操作,再也不需要在与事务相关的方法中处理大量的try ...catch ...finally代码。Spring 中事务的使用虽然已经相对简单得多,但是,还是有很多的使用及配置规则,有兴趣的读者可以自己查阅相关资料进行深入研究,这里只列举出最常用的使用方法。
同样,我们还是以最简单的示例来进行直观地介绍。
- SpringMVC
- Spring消息
Spring Boot
对近期流行的Spring Boot 的体系原理进行分析,剥离其神秘的面纱。Spring Boot作为 Spring 外的一个独立分支,可以说将 Spring 的扩展能力应用得出神入化,仔细研读后一定会受益匪浅。
写在最后
在看得见的地方学习知识,在看不到的地方学习智慧。最后也祝愿大家在Spring 的学习道路上顺风顺水。
最后的最后,小编还给大家整理了一份面试宝典