《疯狂Spring Boot终极讲义》不是一本介绍类似于@PathVariable、@MatrixVariable、@RequestBody、@ResponseBody这些基础注解的图书,它是真正讲解Spring Boot的图书。
Spring Boot的核心是什么?它的核心就是自动配置,以及以自动配置为基础与大量第三方后端技术进行整合。因此学习Spring Boot应该重点关注的就是它为整合各种框架所提供的自动配置,包括Spring Boot如何整合各种前端框架,如Spring MVC、Spring WebFlux;Spring Boot如何整合各种持久层技术,如Spring Data、MyBatis、Hibernate/JPA、R2DBC、jOOQ等;Spring Boot如何整合NoSQL技术,如Redis、MongoDB、Neo4j、Cassandra、Solr、Elasticsearch等;Spring Boot如何整合各种消息组件,如ActiveMQ、Artemis、RabbitMQ、Kafka等;Spring Boot如何整合各种缓存机制,如JCache、EhCache、Redis、Hazelcast等;Spring Boot如何整合各种安全框架,如Spring Security、Shiro等,这些都只是Spring Boot整合的典型内容。
本书的作用就是带你彻底掌握Spring Boot官方手册中所整合的各种技术,而且本书会讲清楚Spring Boot和Spring框架的关系,带着你揭开Spring Boot的核心:自动配置的面纱,领着你剖析Spring Boot自动配置的源代码实现,然后以此为基础,详细讲解Spring Boot如何整合各种Java后端技术。在掌握了本书知识之后,你不仅能轻松看懂Spring Boot官方手册(其实无须再看了),而且真正掌握了Spring Boot的大成,并通过Spring Boot的整合触类旁通地掌握各种Java后端技术。
本书提供了读者答疑交流群,读者可通过扫描本书封面上的二维码,按照指引加入读者答疑交流群。
疯狂Java李刚带领你剖析Spring Boot自动配置的源代码实现,详细讲解Spring Boot如何整合各种Java后端技术
Spring Boot是很简单的:基本上只要原本就真正掌握了SSM(Spring + Spring MVC + MyBatis)或SSH(Struts + Spring + Hibernate)开发,然后再花上半天或一天的时间就能顺利过渡到使用Spring Boot开发。
Spring Boot是很难的:如果想真正掌握Spring Boot,或者曾经看过Spring Boot官方手册,你就会发现Spring Boot完全是Java后端开发集大成的框架,它几乎无所不能。
? 在MVC框架方面,它为整合Spring MVC、Spring WebFlux提供了自动配置。
? 在持久层方面,它为整合Spring Data、JPA/Hibernate、MyBatis、R2DBC、jOOQ等各种主流持久层框架提供了自动配置。
? 在NoSQL方面,它为整合Redis、MongoDB、Neo4j、Cassandra、Couchbase等NoSQL数据库提供了自动配置。
? 在全文检索方面,它为整合Solr、Elasticsearch提供了自动配置。
? 在消息机制方面,它为整合ActiveMQ、Artemis、RabbitMQ、Kafka提供了自动配置。
? 在缓存方面,它为整合JCache、EhCache、Redis、Hazelcast等各种主流缓存框架提供了自动配置。
? 在安全机制方面,它为整合Spring Security、OAuth 2、SAML 2.0等各种主流安全机制提供了自动配置。
? 在应用部署方面,它既为部署到Cloud Foundry、K8s、OpenShift、AWS、Google Cloud等各种云平台提供了支持,也为部署到容器提供了支持。
此外,Spring Boot也是构建微服务架构、分布式应用的基础。换言之,Spring Boot是一个上手极易但学会极难的框架。
因此只要顺着Spring Boot所整合的各种技术进行学习,一旦真正掌握了Spring Boot所能整合的各种技术,基本上也就掌握了Java后端开发的绝大部分技术。
遗憾的是,大多数人学习或使用Spring Boot,根本就只涉及了它的皮毛,造成这种现象很重要的一个原因是,大部分网络资料或市面上的图书名义上是讲解Spring Boot,其实是在讲Spring或Spring MVC,只要你看到资料(或图书)以Spring Boot的名义在讲解@Component、@Controller、@PathVariable、@MatrixVariable、@RequestBody、@ResponseBody等注解,基本就可以断定它并不是真正在介绍Spring Boot—因为这些内容完全不属于Spring Boot。
本书是一本带你真正掌握Spring Boot的图书,书中内容会紧扣Spring Boot核心:自动配置,深入挖掘自动配置的本质,不仅透彻地剖析了Spring Boot自动配置的源代码实现,而且会手把手教你如何实现自己的自动配置、Starter组件。
本书对Spring Boot官方手册的知识结构进行了重新组织,极大丰富了内容,尽量保证有一定Java基础的读者都能看懂。
举例来说,Spring Boot官方手册在介绍Kafka整合时,假设的前提是学习者是有经验的Kafka开发者,不仅熟悉Kafka的配置和各种API,而且熟悉如何在Java应用中使用Kafka API。这个假设前提的要求未免太高了,而大部分读者可能并没有好的基础,所以绝大多数技术学习者打开Spring Boot官方手册往往一脸懵,只能转投那些粗制滥造的“Spring Boot”学习资料。
但本书只假设读者有较好的Java基础,熟悉常见的SSH、SSM技术栈,剩下的事情就交给本书吧。还是以Kafka为例,本书会从ZooKeeper、Kafka的安装和配置讲起,并详细介绍Kafka的实现机制和用法,从目录就能看到,本书会包括Kafka的如下知识:
? 安装Kafka及CMAK。
? 使用CMAK。
? 主题与分区。
? 消息生产者。
? 消费者与消费者组。
? 使用Kafka核心API。
? 使用Kafka流API。
此处仅仅以Kafka为例进行说明,实际上本书对Spring Boot所整合的绝大部分技术都进行了详细的讲解:
? 在MVC框架方面,本书详细介绍了Spring Boot为整合Spring MVC、Spring WebFlux提供的自动配置与扩展配置。
? 在持久层方面,本书详细介绍了Spring Boot为整合Spring Data、JPA/Hibernate、Spring JDBC、MyBatis所提供的自动配置与扩展配置,还包括如何放弃自动配置来开发多数据源的应用,以及使用JTA实现分布式事务等实际项目时要用到的高级知识点。
? 在持久层方面,本书详细讲解了R2DBC、jOOQ这些主流持久化技术的用法,并详细介绍了Spring Boot为整合R2DBC、jOOQ技术所提供的自动配置与扩展配置。
? 在NoSQL方面,本书详细讲解了Redis、MongoDB、Neo4j、Cassandra等NoSQL数据库的用法,并详细介绍了Spring Boot为整合Redis、MongoDB、Neo4j、Cassandra所提供的自动配置与扩展配置。
? 在全文检索方面,本书详细讲解了Solr和Elasticsearch这两个搜索引擎的用法,并详细介绍了Spring Boot为整合Solr、Elasticsearch所提供的自动配置与扩展配置。
? 在消息机制方面,本书详细讲解了ActiveMQ、Artemis、RabbitMQ、Kafka这四个消息组件的用法,并详细介绍了Spring Boot为整合ActiveMQ、Artemis、RabbitMQ、Kafka所提供的自动配置与扩展配置。
本书不是一本从“简单”出发的图书,而是致力于传授Spring Boot的精髓:Spring Boot不应该是一个孤立的框架,它的主要作用就是提供自动配置、Starter与其他Java框架进行整合,因此只要真正掌握了Spring Boot所整合的技术栈,也就几乎完整地掌握了Java后端开发的全部技术栈—这才是本书的目的。
在真正搞懂这本书之前,别轻易说自己掌握了Spring Boot,翻看一下本书的目录,你可能会发现对于Spring Boot,你所掌握的可能只是本书第1章的内容。
多年来,我写作的目的始终如一:如果我写的书不能比市面上其他同类技术的书更好,那就完全没必要写这本书。
同样,本书不是那种满足于泛泛而谈的Spring Boot图书,它并不是简单地满足于教你依葫芦画瓢使用Spring Boot进行开发,而是真正带你走进Spring Boot的本质,让你完全可以自己开发Spring Boot自动配置和Starter,并通过学习Spring Boot所整合的技术栈,进而掌握Java后端开发的完整技术栈。
想了好久,还是决定给书名加上“终极讲义”这四个字,这样可以“警示”那些只想简单涉猎Spring Boot的读者避开本书:本书是Java后端开发的“终极讲义”,因此它涵盖的内容不可能很简单。
对于希望真正掌握Java后端开发的学习者来说,他们可能会通过Spring Boot官方手册来发现本书尚未涵盖的内容:Spring Boot不是还可以整合缓存框架、安全机制、Spring Session、Spring Integration等技术吗?还有Spring Boot应用的部署呢?还有Spring Boot应用的监控呢?这些内容确实不在本书中,它们将会被放在后续出版的本书高级篇中。
本书有什么特点
总之,此书一出更无书。
本书以Spring Boot官方手册为基础,结合Spring Boot源代码进行剖析,重新梳理了Spring Boot的知识脉络,对Spring Boot官方手册进行了极大的丰富,因此掌握本书知识之后,已没必要再去看Spring Boot官方手册,更没必要去看其他Spring Boot图书或资料了。
总结起来,本书具有以下三个典型特点。
1. 真正讲解Spring Boot
本书紧扣Spring Boot的核心:自动配置和Starter,从源代码层面讲解了自动配置和Starter组件的实现,还手把手教会读者实现自己的自动配置和Starter组件;然后以Spring Boot自动配置为基础,详尽介绍了Spring Boot为整合各种Java后端技术所提供的支持,包括常见的自动配置和深入的扩展配置。
2.Java后端开发的终极讲义
本书所介绍的框架和技术包括:Jetty、Tomcat、Undertow、Reactor Netty、Spring MVC、Spring WebFlux、Spring Data、JPA/Hibernate、Spring JDBC、R2DBC、jOOQ、Atomikos、Redis、MongoDB、Neo4j、Cassandra、Solr、Elasticsearch、ActiveMQ、Artemis、RabbitMQ、Kafka;再加上后续出版的本书高级篇要介绍的各种框架和技术,将是Java后端开发的终极讲义。
3.切实可行的学习曲线
与Spring Boot官方手册不同,本书只要求读者具有基本的SSH、SSM基础,并不需要掌握其他框架或技术的知识,本书制定了一条切实可行的学习曲线:只要跟着本书学习,就能真正掌握Spring Boot及Spring Boot所整合的各种技术。
本书写给谁看
如果你已有一定的SSH、SSM基础,或者已经学完了《轻量级Java Web企业应用实战》一书,那么你非常适合阅读此书。此外,如果你对Spring Boot开发有一定的经验,甚至在工作中已经用到了Spring Boot,但希望真正掌握Spring Boot,本书也将非常适合你。如果你对Java Web开发掌握得还不熟练,或者对SSH、SSM完全不会,则建议遵循学习规律,循序渐进,暂时不要购买、阅读此书,而是按照《疯狂Java学习路线图》中建议的顺序学习。