编者按:Spring源码深度解析第二版高清pdf
《Spring源码深度解析》从核心实现和企业应用两个方面系统讲解Spring源码,由浅入深,由易到难,包括Spring的设计理念和整体架构,以及容器的基本实现内容已经介绍完毕,小编还为大家准备了第二版spring源码深度解析高清pdf,欢迎下载
简介
《Spring源码深度解析》从核心实现和企业应用两个方面系统讲解Spring源码,由浅入深,由易到难,包括Spring的设计理念和整体架构,以及容器的基本实现, 解析默认标签,
自定义标签分析、bean加载、容器功能扩展、AOP、数据库连接JDBC、MyBatis集成、事务、SpringMVC、远程服务、Spring消息服务等
《Spring源码深度解析》不仅介绍了使用Spring框架开发项目必须掌握的核心概念,还指导读者如何使用Spring框架编写企业级应用,以及如何优化写代码过程中的代码,
如何让代码高效,并给出切实可行的建议,帮助读者全面提高实践能力。
《Spring源码深度解析》语言简洁,实例丰富,可以帮助读者快速掌握使用Spring进行开发所需的各种技能。 《Spring源码深度解析》适合已经有一定Java编程基础的读者,以及在Java平台下开发各种软件的开发者和测试者。
相关内容预览
关于作者
郝佳,计算机科学硕士,发表多篇论文被EI、SCI收录,2008年辽宁省教育厅科技计划研究员之一;长期从事J2EE领域工作,曾供职于互联网公司Software Architect,
擅长系统性能优化,目前致力于开发基于Java并发多线程管理的开源框架;热衷于研究各种优秀的开源代码并进行总结,从而提高个人技能,尤其对Spring、Hibernate、MyBatis、JMS、Tomcat等源代码有深刻的理解和理解。
目录
第 1 部分核心实现
第 1 章 Spring 整体架构及环境搭建 2
1.1 Spring 整体架构 2
1.2 环境搭建 4
1.2.1 安装 GitHub 4
1.2.2 安装 Gradle 5
1.2. 3 下载 Spring 6
第 2 章容器的基本实现 10
2.1 容器的基本使用 10
2.2 功能分析 11
2.3 项目构建 12
2.4 Spring 的结构组成 13
2.4. 1 bean 包的层次结构 13
2.4.2 核心类介绍 13
2.5 容器基础XmlBeanFactory 17
2.5.1 配置文件封装 18
2.5.2 加载bean 21
2.6 获取XML验证模式 24
2.6.1 DTD 和 XSD 的区别 24
2.6.2 读取验证模式 26
2.7 获取文档 28
2.7.1 EntityResolver 使用 29
2.8 解析和注册 BeanDefinitions 31
2.8.1 配置文件属性的使用 32
2.8.2 解析和注册 BeanDefinition 33
第 3 章解析默认标签 35
3.1 解析和注册bean 标签的数量 35
3.1.1 解析 BeanDefinition 37
3.1.2 AbstractBeanDefinition 属性 55
3.1.3 解析默认标签中的自定义标签元素 58
3.1.4 注册解析的 BeanDefinition 60
3.1 . 5 Notification listener解析和注册完成63
3.2 Alias标签解析63
3.3 Import标签解析65
3.4 Embedded beans标签解析67
第四章自定义标签解析68
4.1自定义Tag用法 69
4.2 自定义标记解析 71
4.2.1 获取标记命名空间 72
4.2.2 提取自定义标记处理器 72
4.2.3 标记解析 74
第 5 章加载 Bean 78
5.1 使用 FactoryBeans 83
5.2 从缓存中获取 Singleton Bean 85
5.3 从 Bean 实例中获取对象 86
5.4 获取 Singleton 90
5.5 准备创建 bean 92
5.5.1 处理 ovverride 属性 93
5.5.2 实例化的预处理 94
5.6 循环依赖 96
5.6.1 什么是循环依赖 96
5.6.2 Spring 如何解决循环依赖 96< br>5.7 创建 bean 100
5.7.1 创建 bean 实例 103
5.7.2 记录创建 bean 的 ObjectFactory 112
5.7.3 属性注入 115
5.7.4 初始化 bean 124
5.7 .5 注册 DisposableBeans 128
第 6 章 容器功能扩展 129
6.1 设置配置路径 130
6.2 扩展功能 130
6.3 环境准备 132< br>6.4 加载BeanFactory 133
6.4.1 自定义BeanFactory 135
6.4.2 加载 BeanDefinition 136
6.5 函数扩展 137
6.5.1 添加 SPEL 语言支持 138
6.5.2 添加属性注册编辑器 139
6.5.3 添加 ApplicationContext AwareProcessor 144
6.5.4 设置忽略依赖项 146
6.5.5 注册依赖项 146
6.6 BeanFactory 的后处理 146
6.6. 1 激活已注册的 BeanFactory PostProcessor 147
6.6.2 注册 BeanPostProcessor 153
6.6.3 初始化消息资源 156
6.6.4 初始化 ApplicationEvent Multicaster 159
6.6.5 注册监听器 161< br>6.7 初始化非延迟加载单例 162
6.8 finishRefresh 165
第 7 章 AOP 167
7.1 动态 AOP 使用示例 167
7.2 动态 AOP 自定义标签 169
7.2.1 注册 AnnotationAwareAspectJ AutoProxyCreator 170
7.3 创建 AOP 代理 173
7.3.1 获取 Booster 176
7.3.2 查找匹配的 Booster 186
7.3.3 创建代理 187
7.4 静态 AOP 使用示例 201
7.5 创建 AOP 静态代理 203
7.5.1 Instrumentation 使用 203
7.5.2 自定义标签 207
7.5.3 Weaving 209
企业应用第二部分
第 8 章数据库连接 JDBC 214
8.1 Spring连接数据库程序实现(JDBC) 215
8.2 保存/更新功能的实现 217
8.2.1 基本我thod execute 219< br>8.2.2 Update 223中的回调函数
8.3 查询函数的实现 225
8.4 queryForObject 229
第九章集成MyBatis 231
9.1 MyBatis独立使用231
9.2 Spring集成MyBatis 235
9.3源码分析237
9.3.1 sqlSessionFactory创建237
9.3.2 MapperFactoryBean创建241
9.3.3 MapperScannerConfigurer 244
第10章事务254
10.1 JDBC模式事务使用示例 254
10.2 事务自定义标签 257
10.2.1 注册InfrastructureAdvisor AutoProxyCreator 257
10.2.2 获取对应的类/方法增强器 261
10.3 事务增强器 269
10.3. 1 创建事务 271
10.3.2 回滚处理 281
10.3.3 事务提交 287
第 11 章 SpringMVC 291
11.1 SpringMVC 快速体验 291
11.2 ContextLoaderListener 295
11.2.1 使用ServletContextListener 295
11.2.2 Spring 中的 ContextLoader 监听器 296
11.3 DispatcherServlet 3 00
11.3.1 servlet 301 的使用
11.3.2 DispatcherServlet 302 的初始化
11.3. 3 WebApps icationContext的初始化 304
11.4 DispatcherServlet的逻辑处理 320
11.4.1 MultipartContent类型的请求处理 326
11.4.2 根据请求信息找到对应的Handler 327
11.4.3 没有对应的Handler找到 331
11.4.4 根据当前Handler找到对应的HandlerAdapter 331
11.4.5 缓存处理332
11.4.6 HandlerInterceptor处理333
11.4.7 逻辑处理334
11.4 . 8 异常视图的处理 334
11.4.9 跳转到页面 335
第 12 章远程服务 340
12.1 RMI 340
12.1.1 使用示例 340
12.1.2 服务客户端实现 342< br>12.1.3 客户端实现 350
12.2 HttpInvoker 355
12.2.1 使用示例 356
12.2.2 服务器实现 357
12.2.3 客户端实现 361
第 13 章 Spring 消息 367< br>13.1 JMS 单机使用 367
13.2 Spring 与 ActiveMQ 集成 369
13.3 源码分析 371
13.3.1 JmsTemplate 372
13.3.2 Liste ner 容器 376
深入解析Spring源码:快速体验SpringMVC
SpringMVC
Spring 框架为构建 Web 应用程序提供了一个功能齐全的 MVC 模块。通过策略接口,Spring框架高度可配置,支持JavaServer Pages(JSP)等多种视图技术,
速度、瓷砖、iText 和 POI。 SpringMVC 框架不知道使用哪个视图,所以它不会强制你只使用 JSP 技术。 SpringMVC 分离了控制器、模型对象、调度程序和处理程序对象的角色,这使得它们更易于定制。
Spring 的 MVC 是基于 Servlet 功能实现的。它通过实现Servlet接口的DispatcherServlet来封装其核心功能实现,并通过可配置的handler映射将请求分发到handler。
查看解析、本地语言、主题解析和上传文件支持。默认处理程序是非常简单的 Controller 接口,只有一个方法 ModelAndView handleRequest(request, response)。 Spring 提供了一个控制器层次结构,可以从中派生子类。如果您的应用程序需要处理用户输入表单,您可以扩展 AbstractFormController。如果需要将多个页面的输入处理成一个表单,可以继承 AbstractWizardFormController。
对于SpringMVC或者其他比较成熟的MVC框架,解决的问题无非就是以下几点。
将网页请求传递给服务器。
根据不同的请求处理不同的逻辑单元。
返回处理结果数据,跳转到响应页面。
我们首先通过一个简单的示例快速回顾一下 SpringMVC 的使用。
11.1 SpringMVC快速体验
1、配置web.xml
Web 可以没有 web.xml 文件,也就是说,web.xml 文件对于 Web 项目不是必需的。 web.xml文件用于初始化配置信息,如Welcome page、servlet、servlet-mapping、filter、listener、启动加载级别等。但是SpringMVC的实现原理是通过servlet拦截所有的URL来实现控制目的,所以需要配置web.xml。
Springmvc
上下文配置位置
类路径:applicationContext.xml
Springmvc
org.Springframework.web.servlet.DispatcherServlet
1
Springmvc
*.htm
org.Springframework.web.context.ContextLoaderListener
Spring的MVC之所以要配置web.xml,其实最关键的就是配置两个地方。
contextConfigLocation:Spring的核心是配置文件。可以说配置文件是Spring中不可缺少的东西,而这个参数是结合Web和Spring配置文件的关键配置。
DispatcherServlet:包含SpringMVC的请求逻辑。 Spring使用这个类来拦截Web请求并进行相应的逻辑处理。
2、创建Spring配置文件applicationContext.xml
ViewResolver”id=”viewResolver”>
InternalResourceViewResolver 是一个辅助 bean。它将prefix指定的前缀添加到ModelAndView返回的视图名称中,然后在末尾添加suffix指定的后缀。例如,由于 XXController 返回的 ModelAndView 中的视图名称是 testview,因此视图解析器会在 /WEB-INF/jsp/testview.jsp 中查找视图。
3、创建模型
模型对于 SpringMVC 不是必需的,如果处理程序非常简单,可以完全忽略。模型创建的主要目的是承载数据,使数据传输更加方便。
公共类用户{
privateString 用户名;
privateInteger 年龄;
publicString getUsername(){
返回用户名;
publicvoid setUsername(字符串用户名){
this.username = 用户名;
publicInteger getAge(){
返回年龄;
publicvoid setAge(整数年龄){
this.age = 年龄;
4、创建控制器
控制器用于处理web请求,每个控制器对应一个逻辑进程。
publicclassUserControllerextendsAbstractController{
@Override
protectedModelAndView handleRequestInternal(HttpServletRequest arg0,HttpServletResponse arg1)throwsException{
列表
<用户>
用户列表 =newArrayList
<用户>
();
用户>
用户>
用户 userA =newUser();
用户 userB =newUser();
userA.setUsername(“张三”);
userA.setAge(27);
userB.setUsername(“李四”);
userB.setAge(37);
userList.add(userA);
userList.add(userB);
returnnewModelAndView(“userlist”,”users”, userList);
在请求结束时返回一个 ModelAndView 类型的实例。 ModelAndView 类在 SpringMVC 中占有非常重要的地位。控制器执行方法必须返回一个 ModelAndView。 ModelAndView 对象保存视图和视图显示的模型数据。例如,参数如下。
第一个参数userlist:视图组件的逻辑名称。这里视图的逻辑名称是 userlist,视图解析器使用它来查找实际的 View 对象。
第二个参数users:传递给视图的模型对象的名称。
第三个参数userList:传递给视图的模型对象的值。
5、创建视图文件 userlist.jsp
<%@ page language=”java” pageEncoding=”UTF-8″%>
<%@ taglib prefix=”c” uri=”http://java.sun.com/jsp/jstl/core”%>
这是 SpringMVC 演示页面
视图文件用于显示请求处理结果。通过支持JSTL,可以方便的展示控制器中放入ModelAndView的处理结果数据。
6、创建Servlet配置文件Spring-servlet.xml
framework.org/schema/tx” http: xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance” xsi:schemalocation=”http://www.Springframework.org/schema /豆子
http://www.Springframework.org/schema/beans/Spring-beans-2.5、 ;xsd
http://www.Springframework.org/schema/tx
http://www.Springframework.org/schema/tx/Spring-tx-2.5、 ;xsd”>
<道具>道具>
因为SpringMVC是基于Servlet的实现,当Web启动时,服务端会首先尝试加载Servlet对应的配置文件,而为了让项目更加模块化,我们通常会存储Web 部件在此配置文件中。
至此,SpringMVC的搭建已经完成,启动服务器,输入网址http://localhost:8080/Springmvc/userlist.htm。
查看服务器返回界面,如图11-1所示。
图11-1 SpringMVC快速体验
本文摘自:《Spring源码深度解析》(第2版)
《Spring源码深度解析》(第二版)
《Spring源码深度解析第2版》(郝佳)【摘要书评试读】-京东图书item.jd.com
全面解析Spring源码,方便读者根据业务需求进行更改或扩展
所有知识点都遵循由浅入深、由易到难的解释结构
复杂的逻辑以画线画茧的方式讲解,降低理解难度
《Spring源码深度解析(第二版)》从核心实现、企业应用和Spring Boot三个方面系统讲解Spring源码,由浅入深、由易到难,包括Spring的整体架构和环境搭建、容器基本实现、默认标签解析、自定义标签解析、bean加载、容器功能扩展、AOP、数据库连接JDBC、MyBatis集成、事务、SpringMVC、远程服务、Spring消息、Spring Boot系统原理、等等。
《Spring源码深度解析(第二版)》不仅介绍了使用Spring框架开发项目必须掌握的核心概念,还指导读者使用Spring框架编写企业级应用程序,以及如何在编写代码的过程中优化代码。 , 如何让代码高效给出实用建议,帮助读者全面提升实战能力。
《Spring源码深度解析(第二版)》语言简洁,实例丰富,可以帮助读者快速掌握使用Spring进行开发所需的各种技能。本书适合已具备一定Java编程基础的读者,以及在Java平台下进行各类软件开发的开发人员、测试人员等。
暂无评论内容