阿里十年总结,这份【Spring架构深度解析】已经被各大厂拿来当面试题了

前言:

对于大多数第一次看spring源码的人来说,都会感觉不知从哪开始看起索性就直接摆烂,因为spring项目源码由多个子项目组成,如spring-beans,spring-context,spring-core,spring-aop,spring-web,spring-webmvc等,也许你自己能说出一万个不知道原理源码也能胜任工作的理由。但是也改变不了,高质量的人才必须要通过原理源码来筛选的事实!不要抱怨没有时间学习,想学的再忙都有时间,不想学的哪怕天天躺床上玩手机也没时间学习。你是没时间学习,还是有时间也没学习,闲话少叙给大家连夜整理这一套可以说是全网最全最细的Spring架构深度解析,今天毫无保留的给大家分享出来希望可以帮助到你让你能轻松掌握Spring。

先看目录:

需要面试技巧的朋友点——【思维导图】——即可免费获取!

 

简介:

本书完全从开发者的角度去剖析源码,每一章都会提供具有代表性的实例,并以此为基础进行功能实现的分析,而不是采取开篇就讲解什么容器怎么实现、AOP怎么实现之类的写法。在描述的过程中,本书尽可能地把问题分解,使用剥洋葱的方式一层一层地将逻辑描述清楚,帮助读者由浅入深地进行学习,并把这些难点和问题各个击破,而不是企图一下让读者理解一个复杂的逻辑。

全书共分为2大部分核心实现、企业应用13章节:

第一部分核心实现(第I~7章):是Spring功能的基础,也是企业应用部分的基础,主要对容器以及AOP功能实现做了具体的分析,如果读者之前没有接触过Spring源代码,建议认真阅读这个部分,否则阅读企业应用部分时会比较吃力。

第二部分企业应用(第8~13章):在核心实现部分的基础上围绕企业应用常用的模块进行讨论,这些模块包括Spring整合JDBC、Spring整合 MyBatis、事务、SpringMVC、远程服务、Spring消息服务等,旨在帮助读者在日常开发中更加高效地使用Spring。

第一部分核心实现

第一章——Spring 整体架构和环境

Spring是于2003年兴起的一个轻量级的Java开源框架,由Rod Johnson在其著作《ExpertOne-On-One J2EE Development and Design》中阐述的部分理念和原型衍生而来。Spring是为了解决企业应用开发的复杂性而创建的,它使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。

第二章——容器的基本实现

源码分析是一件非常煎熬非常有挑战性的任务,你准备好开始战斗了吗?在正式开始分析Spring源码之前,我们有必要先来回顾一下Spring中最简单的用法,尽管我相信您已经对这个例子非常熟悉了。

第三章——默认标签的解析

之前提到过Spring中的标签包括默认标签和自定义标签两种,而两种标签的用法以及解析方式存在着很大的不同,本章节重点带领读者详细分析默认标签的解析过程。默认标签的解析是在parseDefaultElement 函数中进行的,函数中的功能逻辑一目了然,分别对4种不同标签(import、alias、bean和beans)做了不同的处理。

第四章——自定义标签的解析

在之前的章节中,我们提到了在Spring中存在默认标签与白定义标签两种,而在上一章节中我们分析了Spring中对默认标签的解析过程,相信大家一定已经有所感悟。那么,现在将开始新的里程,分析Spring中自定义标签的加载过程。同样,我们还是先再次回顾一下,当完成从配置文件到Document的转换并提取对应的root后,将开始了所有元素的解析,而在这一过程中便开始了默认标签与自定义标签两种格式的区分。

第五章——bean 的加载

经过前面的分析,我们终于结束了对XML配置文件的解析,接下来将会面临更大的挑战,就是对bean加载的探索。bean加载的功能实现远比bean的解析要复杂得多,同样,我们还是以本书开篇的示例为基础,对于加载bean的功能。

第六章——容器的功能扩展

ApplicationContext和BeanFacotry两者都是用于加载Bean的,但是相比之下,ApplicationContext 提供了更多的扩展功能,简单一点说:ApplicationContext包含BeanFactory的所有功能。通常建议比 BeanFactory优先,除非在一些限制的场合,比如字节长度对内存有很大的影响时(Applet)。绝大多数“典型的”企业应用和系统,ApplicationContext就是你需要使用的。那么究竟ApplicationContext 比 BeanFactory多出了哪些功能呢?还需要我们进一步的探索。首先我们来看看使用两个不同的类去加载配置文件在写法上的不同。

第七章——AOP

我们知道,使用面向对象编程(OOP)有一些弊端,当需要为多个不具有继承关系的对象引入同一个公共行为时,例如日志、安全检测等,我们只有在每个对象里引用公共行为,这样程序中就产生了大量的重复代码,程序就不便于维护了,所以就有了一个对面向对象编程的补充,即面向方面编程(AOP),AOP所关注的方向是横向的,不同于OOP的纵向。

第二部分企业应用

第八章——数据库连接JDBC

JDBC(Java Data Base Connectivity,Java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC为数据库开发人员提供了一个标准的API,据此可以构建更高级的工具和接口,使数据库开发人员能够用纯Java API编写数据库应用程序,并且可跨平台运行,并且不受数据库供应商的限制。

第九章——整合MyBatis

MyBatis本是Apache 的一个开源项目iBatis,2010年这个项目由Apache Software Foundation 迁移到了Google Code, 并且改名为MyBatis(下载地址为http://code.google.com/p/mybatis/)。MyBatis是支持普通SQL查询、存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis使用简单的XML或注解用于配置和原始映射,将接口和Java 的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。

第十章——事务

Spring声明式事务让我们从复杂的事务处理中得到解脱,使我们再也不需要去处理获得连接、关闭连接、事务提交和回滚等操作,再也不需要在与事务相关的方法中处理大量的try.….catch.…. finally代码。Spring中事务的使用虽然已经相对简单得多,但是,还是有很多的使用及配置规则,有兴趣的读者可以自己查阅相关资料进行深人研究,这里只列举出最常用的使用方法。

同样,我们还是以最简单的示例来进行直观地介绍。

第十一章——SpringMVC

Spring框架提供了构建Web应用程序的全功能MVC模块。通过策略接口,Spring框架是高度可配置的,而且支持多种视图技术,例如JavaServer Pages(JSP)技术、Velocity、Tiles、iText和POI。Spring MVC框架并不知道使用的视图,所以不会强迫您只使用JSP技术。SpringMVC分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。

第十二章——远程服务

Java远程方法调用,即Java RMI(Java Remote Method Invocation),是Java编程语言里一种用于实现远程过程调用的应用程序编程接口。它使客户机上运行的程序可以调用远程服务器上的对象。远程方法调用特性使Java编程人员能够在网络环境中分布操作。RMI全部的宗旨就是尽可能地简化远程接口对象的使用。

第十三章——Spring 消息

Java 消息服务(Java Message Service,JMS)应用程序接口是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间或分布式系统中发送消息,进行异步通信。Java消息服务是一个与具体平台无关的API,绝大多数MOM提供商都对JMS提供支持。

最后:

今天的分享就到这里了,送大家一句话:只有一条路不能选取——那就是放下的路;只有一条路不能拒绝——那就是成长的路。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值