Spring 5核心原理与30个类手写实战(博文视点出品)pdf下载

Spring 5核心原理与30个类手写实战(博文视点出品)百度网盘pdf下载

作者:
简介:Spring 5核心原理与30个类手写实战(博文视点出品)
出版社:
出版时间:2019-07
pdf下载价格:0.00¥

免费下载


书籍下载


内容介绍

产品特色


编辑推荐

适读人群 :十年沉淀之作,手写Spring精华思想,21万+学员听过在线课,超强实战技术升级指南,囊括源码、设计思想、架构思维、实战案例、开发经验,Java架构师成长必备

★《Spring 5核心原理与30个类手写实战》对应在线课程有21万+学员听过,付费学员有1.3万+

★《Spring 5核心原理与30个类手写实战》作者Tom老师有10余年Java开发经验,对Spring有深入研究及独特见解

★本书几乎涵盖在Spring应用中可能遇到的所有问题,核心原理(IoC、DI、AOP、MVC)、高仿手写、数据访问等

★深度解析Spring 5的原理与新特性,从环境准备、顶层结构设计、数据访问等方面一步步推导出Spring设计原理

★通过本书你可以:

--看源码不再晕车,轻松找到入口。

--系统学习设计思想,提高解决问题的效率。

--培养架构思维能力,自驱学习能力。

--用30个类提炼出Spring核心的精华思想,并保证功能可用。

--从不一样的角度分析Spring经典高频面试题。

--了解Spring 5 的新特性。

--为深入了解Spring Boot做铺垫。


让30W+学员受益的“手写源码学习法”开创者

影响100W+程序员的“Java架构师成长路径”制定人

畅销书作者

全新力作


内容简介

《Spring 5核心原理与30个类手写实战》基于编程开发实践,不仅深度解析Spring 5的原理与新特性,更从环境准备、顶层结构设计、数据访问等方面一步步地推导出Spring的设计原理。在每个知识点上,均以大量的经典代码案例辅助讲解,使理论紧密联系实际。最后手写30个类,以体会Spring作者的创作过程,让每一位读者学以致用。

对于立志成为Java架构师的技术人员,以及对以Spring为核心的Java Web开发感兴趣的计算机专业高校生、在职Java开发人员来说,本书是一本具备超强实战意义的技术升级指南。读者通过本书可以看源码不再“晕车”,轻松找到入口;系统学习设计思想,提高解决问题的效率;培养架构思维能力,以及自驱学习能力。

作者简介

★谭勇德(Tom)

10余年Java开发经验。

咕泡学院联合创始人。

在大型IT公司担任过CTO、系统架构师。

精通Java语言、JS、CSS、AS、PHP等;负责过多个大型分布式系统的微服务架构的技术改造;多年以来对Spring框架有深入研究及独特见解;开发过多套企业内部UI框架和ORM框架;热衷于分享经验,共同进步。

格言:不只做一个技术者,更要做一个思考者。

精彩书评

本书是基于Spring 5开发的架构师实战指南,几乎涵盖在Spring应用中可能遇到的所有问题,包括核心原理(IOC、DI、AOP、MVC)、高仿手写、数据访问等。

——James

咕泡学院联合创始人

如果你想成为架构师,恭喜你遇到了这本书;如果你不想成为架构师,请把本书介绍给需要的人。

——Mic

咕泡学院联合创始人

精彩书摘

  Spring 5于2017年9月发布了通用版本,它是自2013年12月以来第一个主要的Spring版本。它提供了一些人们期待已久的改进,还采用了一种全新的编程范例,以反应式原则为基础。
  这个版本是很长时间以来最令人激动的版本。Spring 5兼容Java?8和JDK 9,它集成了反应式流,以方便后续提供一种颠覆性方法来实现端点和Web应用程序开发。
  当然,反应式编程不仅是此版本的主题,还是令许多程序员激动不已的重大特性。人们对能够针对负载波动进行无缝扩展的容灾和响应式服务的需求在不断增加,Spring 5很好地满足了这一需求。
  下面介绍Java SE 8和Java EE 7 API升级的基本内容、Spring 5的新反应式编程模型、对HTTP/2的支持,以及Spring通过Kotlin对函数式编程的全面支持。还会简要介绍测试和性能增强,最后介绍对Spring核心和容器的一般性修订。
  20.1 升级到Java SE 8和Java EE 7
  以前的Spring一直在支持一些弃用的Java版本,而Spring 5已从“旧包袱”中解放出来。为了充分利用Java 8的特性,它的代码库已进行了改进,而且要求将Java 8作为最低的JDK版本。
  Spring 5在类路径(和模块路径)上完全兼容Java 9,而且它通过了JDK 9测试套件的测试。对Java 9爱好者而言,这是一个好消息。
  在API级别上,Spring 5兼容Java EE 8技术,满足对Servlet 4.0、Bean Validation 2.0和全新的JSON Binding API的需求。对Java EE API的最低要求为V7,该版本引入了针对Servlet、JPA和Bean Validation API的次要版本。
  20.2 反应式编程模型
  Spring 5最令人兴奋的新特性是它的反应式编程模型。Spring 5基于一种反应式基础而构建,而且是完全异步和非阻塞的。只需少量的线程,新的事件循环执行模型就可以垂直扩展。
  Spring 5采用反应式流来提供在反应式组件中传播负压的机制。负压是一个确保来自多个生产者的数据不会让使用者不堪重负的概念。
  Spring WebFlux是Spring 5的反应式核心,它为开发人员提供了两种为Spring Web编程而设计的编程模型:基于注解的模型和Functional Web Framework(WebFlux.fn)。
  基于注解的模型是Spring Web MVC的现代替代方案,该模型基于反应式基础而构建,而Functional Web Framework是基于@Controller注解的编程模型的替代方案。这些模型都通过同一种反应式规则来运行,后者调整非阻塞HTTP来适应反应式流API。
  20.3 使用注解进行编程
  Web MVC程序员应该对Spring 5的基于注解的编程模型非常熟悉,Spring 5调整了Web MVC的@Controller编程模型,采用了相同的注解。
  在下面的代码中BookController类提供了两个方法,分别响应针对某个图书列表的HTTP请求,以及针对具有给定id的图书的HTTP请求。请注意Mono和Flux等对象。这些对象是实现反应式流规范中的Publisher接口的反应式类型,它们的职责是处理数据流。Mono对象处理一个仅含1个元素的流,而Flux表示一个包含N个元素的流。
  @RestController
  public class BookController { //反应式控制器
  @GetMapping("/book")
  Flux list() {
  return this.repository.findAll();
  }
  @GetMapping("/book/{id}")
  Mono findById(@PathVariable String id) {
  return this.repository.findOne(id);
  }
  }
  以上是针对Spring Web编程的注解,下面我们使用函数式Web框架来解决同一个问题。
  20.4 函数式编程
  Spring 5的函数式方法将请求委托给处理函数,这些函数接收一个服务器请求实例并返回一种反应式类型。来看一段代码,创建BookHandler类,其中listBooks()和getBook()方法相当于Controller中的功能。
  public class BookHandler {
  public Mono listBooks(ServerRequest request) {
  return ServerResponse.ok()
  .contentType(APPLICATION_JSON)
  .body(repository.allPeople(), Book.class);
  }
  public Mono getBook(ServerRequest request) {
  return repository.getBook(request.pathVariable("id"))
  .then(book -> ServerResponse.ok()
  .contentType(APPLICATION_JSON)
  .body(fromObject(book)))
  .otherwiseIfEmpty(ServerResponse.notFound().build());
  }
  }
  通过路由函数来匹配HTTP请求参数与媒体类型,将客户端请求路由到处理函数。下面的代码展示了图书资源端点URI将调用委托给合适的处理函数:
  BookHandler handler = new BookHandler();
  RouterFunction personRoute =
  route(
  GET("/books/{id}")
  .and(accept(APPLICATION_JSON)), handler::getBook)
  .andRoute(
  GET("/books")
  .and(accept(APPLICATION_JSON)), handler::listBooks);
  这些示例背后的数据存储也支持完整的反应式体验,该体验是通过Spring Data对反应式 Couchbase、Reactive MongoDB和Cassandra的支持来实现的。
  20.5 使用 REST 端点执行反应式编程
  新的编程模型脱离了传统的Spring Web MVC模型,引入了一些很不错的新特性。
  举例来说,WebFlux模块为RestTemplate提供了一种完全非阻塞、反应式的替代方案,名为WebClient。下面创建一个WebClient,并调用books端点来请求一本给定id为1234的图书。
  //通过WebClient调用REST端点
  Mono book = WebClient.create("http://localhost:8080")
  .get()
  .url("/books/{id}", 1234)
  .accept(APPLICATION_JSON)
  .exchange(request)
  .then(response -> response.bodyToMono(Book.class));
  20.6 支持HTTP/2
  HTTP/2提高了传输性能,减少了延迟,并提高了应用程序的吞吐量,从而提供了丰富的Web体验。
  Spring 5提供专门的HTTP/2特性支持,还支持人们期望出现在JDK 9中的新HTTP客户端。尽管HTTP/2的服务器推送功能已通过Jetty Servlet引擎的ServerPushFilter类向Spring开发人员公开很长一段时间了,但如果发现Spring 5中开箱即用地提供了HTTP/2性能增强,Web优化者们一定会为此欢呼雀跃。
  Spring 5.1提供Servlet 4.0,HTTP/2新特性将由Tomcat 9.0、Jetty 9.3和Undertow 1.4原生提供。
  20.7 Kotlin和Spring WebFlux
  (其他特性详细说明请见原书…………)
  ……

前言/序言

  ★序言
  在1996年,Java还只是一门新兴的、初出茅庐的编程语言。2004年3月24日,Spring正式对外发布1.0版本。我在2009年开始接触Spring 2.0,从此爱不释手。Spring的出现,恰如其名,开启了全世界Java程序员的春天。如今,Spring已然成为一个生态,使用Spring简直就是一种享受。
  本书结合我多年的Spring使用经验,整理了珍藏多年的Spring学习笔记,采用类图和代码片段的形式,加以中文注释,通俗、生动、全面、深入地剖析了Spring源码的重要细节。要想练就“降龙十八掌”,先得修炼内功。本书从设计模式开始讲解,以帮助大家更好地理解Spring,让大家知其然,且知其所以然。
  如果你现在的工作经验与应有的能力无法匹配,
  如果你在自学路上找不到方向,
  如果你现在是初级程序员,想往高级程序员晋级,
  如果你希望成为架构师,
  ……
  本书都能帮到你。
  编写本书旨在使大家进入不一样的思维境界,书中个人观点若有不妥之处,恳望纠正!
  编写本书旨在使大家进入不一样的思维境界,手写源码不是为了重复造轮子,也不是为了装高大上,其实只是我推荐给大家的一种学习方式。
  书中个人观点若有不妥之处,恳望纠正!
  ★关于我
  为什么说我来自文艺界?
  我自幼爱好书法和美术,长了一双能书会画的手,而且手指又长又白,因此以前的艺名叫“玉手藝人”。中学期间,曾获市级书法竞赛一等奖,校园美术竞赛一等奖,校园征文比赛二等奖。担任过学生会宣传部长,负责校园黑板报、校园刊物的编辑、排版、设计。
  2008年参加工作后,做过家具建模、平面设计等工作,亲自设计了咕泡学院的Logo。做讲师之后,给自己起了一个跟姓氏谐音的英文名字“Tom”,江湖人称“编程界写字写得最好的、书法界编程最牛的文艺汤”。
  我的技术生涯
  我的IT技术生涯应该算是从2009年开始的,在此之前做过UI设计,做过前端网页,到2009年才真正开始参与Java后台开发。在这里要感谢所有帮助过我入门编程的同事和老师。从2010年至2014年担任过项目组长、项目经理、架构师、技术总监,对很多的开源框架建立了自己的独特见解。我会习惯性地用形象思维来理解抽象世界。譬如:看到二进制0和1,我会想到《周易》中的两仪——阴和阳;看到颜色值用RGB表示,我会想到美术理论中的太阳光折射三原色;下班回家看到炒菜流程,我会想到模板方法模式;坐公交车看到学生卡、老人卡、爱心卡,我会想到策略模式;等等。大家看到的这本书,很多地方都融入了这种形象思维。
  为什么写书?
  其实一开始我没想过要写书,写书的初衷主要是满足学员的诉求。大家认为我个人的学习方法、思维模式、教学方式通俗易懂,很容易让人接受,但是通过视频形式传播受众有限,学员建议我把这些宝贵的经验以纸质书的形式奉献给大家,这样定会给社会带来更大的价值。
  借此机会,特别感谢责任编辑董英及电子社的团队成员为本书审稿纠错;感谢我老婆在无数个加班的夜晚给我默默的支持;感谢咕泡学院的学员给本书内容提出宝贵的修改意见。
  谭勇德(Tom)
  2019年5月 于 长沙