SpringBoot是一门综合性的实战型应用技术框架,要求开发者在已经完全掌握Spring、SSM开发框架整合基础之上实现的进一步的简化开发模型,不仅简单易学,同时也属于当前企业应用开发中最为使用的技术。
在本次的课程讲解中为读者详细的分析了SpringBoot的运行机制,并且围绕着SpringBoot所提供的四个核心组件(AutoConfig、Starter、Actuator、SpringBootCLI)进行了详细的拆解,基于已经掌握的Spring/SpringMVC/MyBatis/MyBatisPlus/JPA/Shiro进行了整合处理,同时又深入的讲解了SpringBoot所提供的异步开发的技术实现。
本书附有配套视频、源代码、习题、教学课件等资源。为了帮助读者更好地学习本书,作者还提供了在线答疑。
不知不觉间又过了匆匆数月,而这本图书也正好是我个人所出版的第20本技术图书,从我确定要写这本图书开始就进入了不眠不休的创作过程,每一个字每一张图都力争原创,写一本好书是每一位有良心的作者的共同心声,而每一本好书的背后所体现的就是我们从业者的职业态度以及作为一名职业讲师所拥有的教育责任心。
技术行业每天唯一不变就是每天都在改变,而技术的每一次革新都在不断催促着行业的发展。而作为一名技术爱好者以及一线技术讲师,我们每天的工作就是在不断的学习新的技术理论与熟悉新的技术工具,但是依然也有很多不理解我们这类技术讲师工作的外行人,总是在不断的嘲笑我们不思进取。我承认这个行业有很多的摸鱼者,但是并不是所有的人都喜欢安于现状,我每天唯一想做的事情就是如何超越自己,每天进步一点点是我人生恪守的信条,而最让我恐慌的就是我自己的原地踏步与不思进取。
当今早已不是那个学会一门手艺吃一辈子的年代了,每位技术从业者除了要熟练的掌握基础理论之外,还需要不断的学习,并且不断的尝试突破创新。我从2008年开始编写第一本Java图书开始所度过的每一天的写作生涯,都在不断的尝试写作风格的变更,因为我想要出版一系列真正的好书,让所有读者真正可以读懂,工作中用得上的好书,而不是买来后扔在墙角慢慢让其发霉变质。
说起微服务我是从2016年的时候开始接触的,而当时也是国内微服务刚刚兴起的时候,于是我在2017年01月份完成了我的第一本微服务的技术图书《Java微服务架构实战》,但遗憾的是由于各种无法控制的外部原因,此书一直到2020年的01月份才正式出版,而大家知道此时的SpringBoot版本早已经更新到了SpringBoot2.x,也就是说我的书还没到大家手里就已经彻底过时了,而这也成为了我整个出书史上最为糟心的一幕。为了弥补心中的这份遗憾,我才决定在2021年的时候重写一本新的SpringBoot图书,这也是本书编写最重要的一个原因,而另外的一个原因就在于市面上的很多图书大多千篇一律缺少“图书的灵魂”,于是我要写一本全新的,与众不同的SpringBoot图书,为的是将真正且系统的SpringBoot技术完整的传播,同时也希望可以将自己的这份的原创精神传递给更多的技术爱好者。
本书是一本纯粹性的讲解SpringBoot技术的图书,书中的章节组成来自于SpringBoot官方学习文档,同时又追加了我自己对技术的理解以及读者认知模式的思考而形成的一本原创图书,该图书的主要特点如下:
众所周知Java技术的学习体系庞大,所涉及到的基础知识较多,如图0-1所示,而所有的学习者在正式接触到Java项目开发前都必须经历痛苦且漫长的基础知识理论学习才可以走向Java开发的岗位。而这本SpringBoot一书是Java整体课程学习的一个重要节点,是由理论基础学习到项目实战的重要转折点,学习者只有透彻的掌握了SpringBoot才可以向后继续学习SpringCloud,从而慢慢理解分布式开发架构,才能逐步走入Java架构师的技术岗位,获取较高的收入报酬。
图0-1李兴华高薪就业编程训练营系列教材
虽然SpringBoot是现在Java开发中主要使用的开发框架,但是如果要想彻底学懂以及完全使用SpringBoot开发框架进行项目开发,还需要有一系列的技术前提。首先需要熟练的掌握《JavaWEB就业编程实战》一书中的全部基础技术,并深刻理解MVC框架设计与MVC项目实战,而后才可以轻松的理解Spring以及SpringMVC开发框架的实现原理,这样才可以为后续的SSM(Spring+SpringMVC+MyBatis)框架整合开发打下基础。而在《SSM就业编程实战》之中不仅仅讲解了SSM开发框架的整合,实际上还包含有基于Shiro的SSM(Spring+Shiro+MyBatis)以及JPA与SpringDataJPA的应用,因为这些技术最终全部都要求在SpringBoot中进行整合,如图0-2所示,而考虑到知识学习层次的需要,在本系列的图书中是将每一部分的知识进行有效的分割,以保证大家学习层次以及知识的延续性。
图0-2知识递进学习体系
SpringBoot开发相比较于传统的SSM框架整合开发最大的特点在于其可以更加方便实现基于Restful前后端分离架构,如图0-3所示,所以在进行本书设计的时候充分的考虑到了当前的应用环境,讲解的核心重点也全部放在了后台接口的良好设计,这样的讲解也为了后续的《SpringCloud就业编程实战》一书的微服务集群架构打下了良好的概念基础。
图0-3基于前后端分离设计
考虑到知识的全面性本书在编写的时候大量的参考了SpringBoot官方学习文档,并且将官方学习文档的资料进行了重新的梳理,使其更加适合于国人的阅读习惯,经过一系列的筛选编写出了12章的具体内容,每一章都有一个核心的主题,同时每一章都为后续的章节提供概念上的支持,这些章节的安排如下:
第01章、SpringBoot概述:从传统的JavaEE(JakartaEE)的开发架构上阐述设计缺陷,同时分析了SSM框架整合开发中所存在的各类问题,并从宏观层次上介绍了SpringBoot技术特点以及与微服务之间的关联;
第02章、SpringBoot编程起步:本次基于Gradle构建工具搭建了基础项目环境,并且分析了Gradle提供的各个开发插件的作用,最终给出了多模块环境下的SpringBoot项目搭建;
第03章、SpringBoot环境配置:讲解了SpringBoot启动Banner修改、与原始Spring配置文件结合、项目热部署以及JUnit5测试工具的使用,同时深入讲解了Lombok组件配置以及生成类结构主要的作用;
第04章、SpringBoot数据处理:程序是以数据处理为导向的组件集合,在本章中为读者分析了常见的几种文件结构的返回,例如:XML、JSON、PDF、Excel等,同时讲解了如何基于配置文件实现Bean注册;
第06章、Thymeleaf模版:SpringBoot可以很好的适应于单实例的项目开发,所以提供了Thyemeleaf模版组件的整合,在本章中将为读者分析模版文件的存储以及常见模版语法的使用;
第07章、Actuator服务监控:SpringBoot内置有完整的监控数据获取支持,而要想进行合理的监控还需要整合Prometheus组件并结合NodeExport实现服务器的数据监控,在这一章中会对SpringBoot监控操作做深入讲解;
第08章、SpringBoot与服务整合:自定义事件、分布式任务管理、WebService、WebSocket都属于常见的项目组件,在这一章中会基于各个组件依赖库进行服务的整合实现;
第09章、SpringBoot异步编程:异步编程可以提高程序的处理性能,而在SpringBoot中支持有传统的多线程任务、Reactor响应式编程,在这一章中对异步编程的实现进行了整体的讲解,并且讲解了最新的RSocket协议支持;
第10章、AutoConfig与Starter:自动配置是SpringBoot技术的宣传亮点,也是实现零配置的关键,在这一章中为读者分析了自动配置的实现,并且基于SpringBoot启动程序类实现了SpringBoot应用启动分析;
第11章、SpringBoot与数据库编程:SSM是现代项目开发的主要应用框架,而SpringBoot简化了Spring以及SpringMVC的使用,但同时也需要引入MyBatis组件实现数据层开发,在本章中讲解了Druid数据源配置、Druid监控、MyBatis/MyBatisPlus整合、JTA分布式事务实现;
除了以上的这些章节之外,考虑到读者对于前后端设计的需求问题,我们也在最后安排了一个具体的项目实战,在这个项目实战中将基于已有的前端项目(Vue.JS+ElementUI实现)实现了分布式认证管理以及数据跨域访问的实现,考虑到学习层次的问题,本书并没有具体的讲解这些前端的内容,而有兴趣的读者也可以参考本系列的前端课程。
图书目录:
第1章、SpringBoot概述11.1、传统Java开发之痛11.2、Spring之伤21.3、走进SpringBoot41.4、本章概览6
第2章、SpringBoot开发入门12.1、SpringBoot开发起步12.1.1、第一个SpringBoot应用22.1.2、SpringBoot注解分析32.2、Gradle构建管理52.2.1、dependency-management插件52.2.2、SpringBootPlugin72.2.3、多模块拆分72.3、本章概览11
第3章、SpringBoot环境配置13.1、自定义启动Banner13.2、导入Spring配置文件33.3、项目热部署53.4、整合JUnit5用例测试63.5、Lombok插件83.5.1、生成类操作结构93.5.2、Accessor113.5.3、建造者模式133.5.4、异常处理153.5.5、IO流自动关闭163.5.6、同步方法173.7、本章概览18
第6章、Thymeleaf模版16.1、Thymeleaf基本使用16.1.1、Thymeleaf编程起步26.1.2、Thymeleaf环境配置56.1.3、整合静态资源56.2、路径访问支持76.3、读取资源文件86.4、环境对象支持116.5、对象输出136.6、Thymeleaf页面显示156.6.1、页面逻辑处理156.6.2、数据迭代处理166.6.3、页面包含指令186.6.4、页面数据处理206.7、本章概览21
第7章、Actuator服务监控17.1、服务监控17.2.1、Actuator接口访问37.2.2、heapdump信息47.2.3、info服务信息57.2.4、health服务信息77.2.5、远程关闭97.2.6、自定义Endpoint107.2、日志处理117.2.1、SpringBoot日志配置127.2.2、整合Logback日志配置文件147.2.3、动态修改日志级别157.2.4、MDC全链路跟踪177.3、Actuator可视化监控217.3.1、NodeExporter237.3.2、获取Prometheus监控数据247.3.3、配置Prometheus服务257.3.4、Grafana可视化287.3.5、监控报警配置307.3.6、警告触发测试347.4、本章概览35
第09章、SpringBoot异步编程19.1、SpringBoot异步处理19.1.1、Callable实现异步处理19.1.2、WebAsyncTask49.1.3、DeferredResult59.1.4、SpringBoot异步任务69.2、WebFlux89.2.1、Reactor终端响应109.2.2、SpringBoot整合Reactor119.2.3、Flux返回集合数据129.2.4、WebSocket处理支持149.3、RSocket159.3.1、RSocket基础开发189.3.2、搭建RSocket服务端229.3.3、搭建RSocket客户端259.3.4、RSocket文件上传279.3.5、基于RSocket开发WebSocket309.4、本章概览35
第11章、SpringBoot与数据库编程111.1、Druid数据源111.1.1、基于Bean配置Druid411.1.2、Druid监控界面711.1.3、WEB访问监控811.1.4、SQL监控911.1.5、SQL防火墙1211.1.6、Spring监控1611.1.7、Druid日志记录1711.2、SpringBoot整合MyBatis1911.2.1、SpringBoot整合MyBatisPlus2111.2.2、基于Bean模式整合MyBatisPlus组件2411.2.3、AOP事务处理2611.3、多数据源2711.3.1、配置多个Druid数据源2911.3.2、动态数据源决策3211.3.3、MyBatisPlus整合多数据源3511.4、JTA分布式事务3811.4.1、AtomikosDataSourceBean4011.4.2、多数据源事务管理4311.4.3、MyBatis整合分布式事务4611.5、本章概览47
图书配套视频列表:0000_【前言】写在前面的话本书是一本综合讲解SpringBoot原生开发技术的原创图书,也是作者若干年的开发与教学经验的总结,在这一部分我们将为读者全方面的介绍本书的写作目的以及章节内容概述。
0101_【理解】传统Java开发之痛Java是构建企业平台与互联网平台的首选编程语言,在本课程中为读者分析了传统的JavaEE所带来的结构缺陷与性能问题,同时引出了开发框架设计的重要意义。
0102_【理解】Spring之伤Spring作为一款优秀的开发框架从2002年起就一直陪伴Java技术的成长,同时也已经成为了一种事实上的Java开发标准,但是为什么要在Spring框架之上继续研发SpringBoot呢?在本课程中为读者讲解了Spring的起源、发展以及存在的问题。
0103_【理解】走进SpringBoot为了降低开发者的代码编写,Pivotal公司基于Spring开发了SpringBoot开发框架,可以提高项目的启动与开发效率,本课程为读者分析了SpringBoot的特点、与Spring之间的关联以及微服务的基本概念。
0201_【掌握】构建SpringBoot项目SpringBoot项目的开发需要大量的第三方组件库,开发者可以直接基于Gradle构建工具进行开发实现,本课程通过IDEA实现了Gralde项目的构建以及依赖库配置。
0202_【掌握】第一个SpringBoot应用SpringBoot可以以Java程序的方式运行,而后会结合内置的Tomcat容器自动实现应用程序的部署,本课程通过具体的代码讲解了第一个SpringBoot的程序开发。
0204_【掌握】dependency-management插件构建工具中的依赖版本是项目维护的重点,在本课程中为读者讲解了如何基于Gradle插件实现SpringBoot依赖库定义,以及Spring初始化工具的使用。
0205_【掌握】SpringBootPluginGradle对SpringBoot项目提供着良好的环境支持,为了便于程序开发提供了专属的SpringBoot插件,本课程讲解了此插件的作用以及引入配置。
0206_【掌握】多模块拆分一个良好的项目结构设计,需要依据功能实现子模块的拆分操作,本课程中将基于Gradle工具的特性实现父模块的标准化结构定义以及子模块配置。
0301_【理解】自定义启动BannerSpringBoot极大的满足了开发者的开发要求,可以通过配置文件实现自定义的Banner,或者通过程序类在每次项目启动时设置不同的Banner,本课程通过具体的实例讲解了Banner文本的生成以及动态Banner的实现。
0304_【掌握】整合JUnit5用例测试为了保证项目功能的正确性,往往需要对代码的执行结果进行测试,实际项目中JUnit是比较常见的用例测试工具,本课程通过具体的实例为读者讲解了如何基于JUnit5实现SpringBoot程序功能的测试。
0305_【掌握】Lombok简介与配置Lombok是在项目开发中非常著名的一款开发插件,可以帮助用户自动的生成大量的程序代码,减少用户编码的重复操作,本课程为读者介绍了Lombok插件的作用,并且在IDEA中实现了Lombok使用环境配置。
0306_【掌握】生成类操作结构简单Java类是在程序开发中最为常用的一种处理结构,在引入了Lombok插件后,开发者可以极大的简化简单Java类的结构定义,本课程为读者分析了Lombok提供的类结构生成注解的使用,并利用反编译工具实现了生成代码的比对。
0307_【理解】Accessor标准中对象的属性设置需要通过setter方法来完成,但是在Java中允许开发者根据自己的需要定义不同的属性操作方法,所以在Lombok插件中提供了属性访问器的注解,本课程通过具体的代码分析了属性访问器中的三种操作模式。
0308_【理解】建造者模式建造者模式(又称构建者模式)可以将一个复杂对象的构建与表示进行分离,在Lombok中可以直接进行建造者模式的生成,本课程为读者分析了建造者模式的意义以及Lombok建造者模式生成操作的实现。
0309_【理解】异常处理在异常处理中需要到处使用“try…catch”的结构进行捕获,而为了简化异常处理操作,Lombok也提供了异常代码自动生成的注解,本课程为读者分析异常的处理操作的问题以及自动化异常处理的基本形式。
0310_【理解】IO流自动关闭在Java中所有的资源操作完成后都需要手工调用close()方法进行处理,而Lombok提供了资源自动释放的注解,本课程将通过实例为读者讲解该注解的使用。
0311_【理解】同步方法多线程进行同一资源调用时需要进行同步处理,Lombok提供了自动的同步化代码生成,本课程通过具体的实例讲解了同步方法的生成定义。
0401_【掌握】对象转换处理SpringBoot中的Action方法可以直接实现参数与对象的接收,也可以直接以Rest风格实现对象数据的返回,本课程通过具体的代码实例讲解了此操作的实现,同时利用Gradle项目结构管理机制实现了代码的拆分与重用设计。
0402_【掌握】整合FastJSON组件FastJSON是阿里推出的国内使用较为广泛的高性能JSON处理工具,在本课程中将通过具体的操作演示,将FastJSON整合到SpringBoot之中,并用其生成JSON数据。
0403_【理解】返回XML数据XML是一种传统的数据交互格式,在SpringBoot程序设计中也可以直接基于Jackson依赖库实现XML数据响应,本课程通过具体的代码实例分析了XML的作用,同时基于新的依赖组件实现了对象转换为XML数据转换处理。
0404_【理解】返回PDF数据为了便于文件的存储保存,在项目中往往会将文本信息以PDF结构的形式返回,在本课程中通过实例讲解了如何在SpringBoot项目中通过itextpdf组件生成PDF文件。
0405_【理解】返回Excel数据为了便于项目中业务人员的数据统计需要,可以使用Excel实现数据的导出,本课程在SpringBoot项目中引入了EasyPOI组件实现Excel文件生成与下载。
0406_【理解】返回图像流服务器端程序在开发中可以通过MIME响应的设置实现图像数据的返回,在SpringBoot中对这一常用操作进行了简化处理,本课程通过具体的实例为读者讲解了图像响应操作的实现。
0407_【理解】返回视频流随着现代项目的发展要求,页面中显示视频已经是常规操作,而SpringBoot中内置了非常方便的视频资源请求处理操作,本课程通过实例为读者讲解了视频资源二进制传输的控制实现。
0408_【理解】文件下载一个WEB服务器中会存在有大量的丰富资源,开发者为了资源的安全性,往往需要通过程序实现下载控制,本课程为读者讲解了服务端文件下载操作的实现。
0409_【掌握】属性定义与注入项目中经常会使用资源文件进行配置管理,在SpringBoot中开发者可以使用默认的yaml文件实现配置,本课程为读者分析了YAML文件的基本格式,并通过实例讲解了资源自动注入的操作实现。
0411_【掌握】注入对象数据Java项目中的一切数据皆为对象,开发者可以利用SpringBoot提供的YAML文件实现对象属性的配置,本课程讲解了资源属性与类关联结构的定义。
0412_【掌握】自定义注入配置文件在资源管理中为了避免过多资源配置导致application.yml文件的冗余,所以提供有资源文件的引入支持,在本课程中将实现资源的拆分以及注入管理。
0501_【掌握】项目打包SpringBoot提供了微服务构建的核心基础,本次课程将基于Gradle任务管理实现了SpringBoot项目可执行jar文件的配置与生成操作。
0502_【掌握】调整JVM运行参数JVM是SpringBoot程序运行的核心,然而在默认情况下JVM并不能够很好的发挥服务主机的性能,本课程基于SpringBoot程序部署讲解了JVM核心参数配置操作。
0504_【掌握】profile环境配置profile是项目开发环境的统一管理文件,SpringBoot考虑到多开发环境的应用,提供了良好的profile处理支持,本课程通过具体的代码为读者分析了profile定义的两种形式,以及动态切换profile的操作。
0505_【理解】打包war文件在SpringBoot运行中除了可以使用jar文件结构之外,也可以基于传统的war文件部署,本课程讲解了war文件的打包、程序类配置以及Tomcat应用部署操作。
0506_【理解】整合Jetty容器Jetty已经是谷歌应用引擎(GAE)中被广泛使用的WEB容器,也是世界上较为流行的一种WEB容器,本课程为读者分析了Tomcat与Jetty运行架构,并通过具体的讲解实现了SpringBoot与Jetty的整合。
0507_【理解】整合Undertow容器Undertow是新一代的WEB容器,本课程为读者讲解了如何将SpringBoot以Undertow容器的配置实现。
0508_【掌握】获取WEB内置对象JavaWEB的核心机制是围绕内置对象操作展开的,在本课程中为读者讲解了SpringBoot中的内置对象获取机制。
0509_【掌握】读取资源文件项目中的资源文件可以实现公共文字项的配置,也可以轻松的实现代码的国际化运行机制,本课程为读者讲解了资源文件的配置以及国际化数据读取操作。
0510_【掌握】文件上传文件上传是HTTP中的常见应用,本课程通过实例代码讲解了FileUpload组件在SpringBoot中的应用,并利用curl工具模拟文件上传操作的实现。
0511_【掌握】整合WEB过滤器过滤器是传统WEB组件为了保证请求安全而设计的,在Spring中可以基于Bean配置的形式实现过滤器的开发,本课程讲解了WEB过滤器定义的两种形式以及多个过滤器执行顺序的配置。
0512_【掌握】整合WEB监听器监听是WEB开发中提供的事件驱动型的程序组件,在SpringBoot中也可以通过监听器实现各种状态的处理,本课程讲解了在SpringBoot下的WEB监听器开发。
0513_【掌握】拦截器拦截器是SpringMVC所提供的扩展拦截组件,可以直接实现Action请求与响应的拦截处理,本课程基于SpringBoot实现了一个拦截器的定义与配置操作。
0514_【掌握】AOP拦截器AOP是Spring的核心组成技术,也是对代理设计模式的有效封装,本课程讲解了如何在SpringBoot中基于AOP切面形式实现程序调用的拦截处理。
0515_【理解】整合Email邮件服务WEB项目中经常需要与邮件系统进行整合,SpringBoot也提供有方便的邮件整合机制,本课程将通过已有的邮件系统实现服务开通,并利用程序实现邮件发送操作
0517_【理解】全局错误页WEB开发中考虑到可能出现的各种错误信息,最终都会定义统一的错误显示页,本课程通过实例讲解了如何在SpringBoot项目中定义错误页以及HTTP状态码的匹配。
0518_【掌握】全局异常处理良好的程序开发需要有全面的异常处理操作,在SpringBoot中提供了全局异常的处理操作响应支持,本课程通过代码讲解了项目中统一异常的配置及数据响应。
0520_【掌握】全局数据预处理Action类中的参数与对象转换是依靠名称的匹配机制完成的,但是开发的多样性中是有可能出现同名属性问题的,本课程为读者分析了同名属性对于参数接收的影响,并利用了全局预处理的形式基于标记前缀的方式解决了该问题。
0521_【理解】数据验证简介数据验证是保证请求正确执行的关键步骤,在SpringBoot中可以直接引用JSR303验证规范进行验证处理,本课程为读者分析了Rest架构中请求验证的意义。
0522_【掌握】JSR303数据验证规范本课程为读者讲解了JSR验证规范的具体定义以及Hibernate验证组件提供的扩展验证操作,并通过具体的实例分析了类验证规范以及普通参数验证的实现。
0524_【理解】自定义验证器随着项目的不同对于数据验证的处理要求也是不同的,考虑到程序开发扩展性的需要,JSR303也支持有自定义验证器的设计需求,本课程通过具体的操作实例为读者讲解了自定义验证注解与验证处理器的使用。
0601_【理解】Thymeleaf简介单主机的项目需要实现动态数据的展示,在SpringBoot中默认集成了Thymeleaf模版支持,本课程为读者讲解了传统显示层开发的问题,以及Thymeleaf模版的特点。
0602_【理解】Thymeleaf编程起步SpringBoot框架中针对于Thymeleaf模版提供了良好的支持,在本课程中为读者讲解了Thymeleaf模版文件的保存结构并且通过一个具体的代码实现了控制器与模版之间跳转以及属性传递的功能实现。
0605_【理解】路径访问支持程序开发中需要通过动态模版页面进行数据显示,同时也需要加载指定的静态资源,为此Thymeleaf提供了方便的资源定位符,本课程将通过一个基本的请求跳转并结合资源定位符实现页面显示操作。
0606_【理解】读取资源文件Thymeleaf中可以直接实现资源文件的内容加载,同时结合合理的Locale设置即可实现国际化的数据显示要求,本课程通过具体的实例讲解了Thymeleaf国际化操作实现。
0607_【理解】内置对象支持内置对象是构成JavaWEB开发的核心单元,在模版中可以直接在页面实现指定内置对象的获取,本课程为读者介绍了Thymeleaf中的环境对象以及基本使用
0608_【理解】对象输出MVC设计中是以对象实现数据传输处理的,在Thyemleaf中可以直接利用特定的语法实现对象属性的获取,本课程通过实例演示了一个对象传递与属性输出的操作。
0609_【理解】页面逻辑处理动态页面是根据传递的属性内容实现渲染的,在Thymeleaf中可以直接在页面中结合关系运算以及逻辑运算进行分支判断操作,本课程通过具体的实例讲解了th:if、th:unless、th:switch等语句的使用。
0610_【理解】数据迭代处理为了便于数据显示控制层常常将内容保存在集合之中,本课程讲解了Thymeleaf模版语法中的List与Map集合接收与迭代输出操作。
0611_【理解】页面包含指令包含是页面程序可重用性操作的重要技术手段,在进行页面展示时可以实现功能程序的拆分,本课程通过实例为读者分析了Thyemeleaf中提供的两种包含语法支持。
0701_【掌握】Actuator监控简介项目监控是保证服务稳定的重要依据,在SpringBoot中提供了Actuator监控管理,本课程为读者讲解了微服务监控的意义,以及Actuator组件的配置及使用。
0702_【掌握】Actuator接口访问Actuator由一系列的服务接口所组成,本课程为读者宏观的介绍了常见的监控端口功能,同时演示了mappings、beans监控信息的获取。
0703_【理解】heapdump信息为了便于代码性能的调整,,开发者可以通过Actuator工具中提供的heapdump堆内存快照信息进行分析,本课程讲解了heapdump文件的下载以及内存信息查看。
0704_【理解】info服务信息项目中的微服务需要进行明确的功能标准,所以在Actuator中就提供有完善的info服务监控,本课程通过实例讲解了info配置的两种形式以及信息内容的获取。
0705_【理解】health服务信息微服务的能否持续的提供稳定的服务是保持项目持续运行的关键所在,在Actuator中提供了健康状态监控支持,本课程为读者讲解了“/health”返回信息控制以及自定义健康状态检测类的使用。
0706_【理解】远程关闭Actuator除了提供有状态监控功能外,也可以实现远程服务关闭的操作,本课程通过实例分析讲解了远程关闭的启用以及命令发送操作。
0707_【理解】自定义Endpoint考虑到项目监控扩展的支持,可以采用自定义EndPoint处理形式完成,本课程通过实例讲解自定义EndPoint工具类定义,并实现了数据参数的传递。
0708_【掌握】Lombok日志注解日志是项目中的常规功能,在SpringBoot中已经自动的实现了日志组件的依赖配置,本课程讲解了传统日志的处理操作,并结合Lombok日志注解实现了日志输出。
0709_【掌握】SpringBoot日志配置为了便于日志管理,往往都需要设置不同的日志级别,本课程为读者分析了默认的日志级别,同时通过具体的实例讲解了如何基于application.yml实现日志级别的配置。
0710_【掌握】整合Logback日志配置文件SpringBoot中的日志除了可以通过yaml配置之外,也可以进行单独的日志配置的引入,本课程为读者定义了Logback日志配置文件,并实现了日志的归类管理。
0712_【掌握】MDC全链路跟踪良好的日志记录需要详细的保存用户线程的每一步操作信息,所以在Slf4j中提供了MDC全链路跟踪日志,本课程为读者分析了传统日志记录中的问题,同时通过具体的实例讲解了MDC全链路跟踪的程序实现。
0713_【理解】Actuator可视化监控简介合理的微服务监控是保证项目正确运行的关键,这样就需要将Actuator提供的监控数据进行有效的整理,在本课程中为读者讲解了监控数据可视化的意义,并介绍了在可视化监控操作中常见的服务组件作用,同时为了便于读者清楚的理解每项服务的作用,利用虚拟机实现了一个监控集群的服务主机配置。
0714_【理解】NodeExporterNodeExport是一个由Prometheus所提供的服务插件,其主要的目的是可以获取当前应用主机的监控信息,本课程为读者讲解了NodeExporter组件的获取以及环境配置。
0715_【理解】获取Prometheus监控数据基于Actuator的处理机制,可以在项目中与Prometheus监控工具有效整合,本课程通过实例讲解了如何实现“/prometheus”监控终端的启用。
0716_【理解】配置Prometheus服务Prometheus是一个开源工具可以方便的被所有开发者所使用,本课程为读者讲解了Prometheus工具的下载,并在Linux系统上进行了实现了工具的安装与配置。
0717_【理解】Gragana可视化为了实现更加丰富的可视化效果,在微服务监控中往往会通过Grafana组件进行处理,本课程为读者讲解了Grafana组件的安装以及与Prometheus整合操作。
0719_【理解】警告触发测试Prometheus中的报警数据是实时获取的,为了可以帮助读者观察到监控状态并可以接收到警告信息,在本课程中会通过stress工具实现测试操作。
0801_【理解】Spring定时任务SpringBoot可以直接通过SpringTask实现定时任务的定义,在本课程中将通过间隔任务调度以及CRON任务调度两种模式实现定时任务,并阐述了定时任务与线程池之间的关联。
0802_【掌握】ShedLock分布式定时任务为了便于集群中的定时任务管理,在SpringBoot中可以利用ShedLock实现分布式定时任务调度,在本课程中为读者分析了集群节点定时任务的重复执行问题,并且结合Redis数据库实现了分布式定时任务锁的管理。
0804_【理解】自定义事件概述项目开发中会因为各种业务处理的强大逻辑关系造成业务功能代码的耦合家居,所以为了实现解耦和的目的就可以基于事件方式进行配置,在本课程中总结了Java中的事件管理机制实现问题,并分析了Spring中的事件实现机制
0805_【掌握】自定义事件处理Spring对已有的事件机制进行了扩充,在本课程中为读者分析了Spring中的事件实现结构,并且利用给定的程序类实现了事件触发与处理操作。
0808_【理解】搭建WebService服务端Java中为了便于WebService开发提供了专属的jws程序包,同时可以在SpringBoot中结合CXF开发框架实现服务的发布,本课程通过具体的程序实例,讲解了WEB服务的开发以及发布处理。
0809_【理解】开发WebService客户端WebService客户端需要依据SOAP协议模式进行调用,而通过CXF可以减少客户端使用的代码繁琐度,本课程为读者讲解了客户端的静态与动态调用模式。
0810_【掌握】WebSocket简介WebSocket是HTML5所提供的重要通讯组件,本课程为读者讲解了WebSocket与Ajax操作的区别,以及WebSocket的通讯机制。
0811_【理解】开发WebSocket服务端SpringBoot提供了方便的WebSocket开发支持,在本课程中为读者通过实例讲解了WebSocket程序开发实现。
0812_【理解】开发WebSocket客户端WebSocket客户端不受到服务器的限制,只要提供有正确的WebSocket的连接地址即可访问,本课程通过原生的JavaScript实现了WebSocket通讯操作。
0902_【掌握】Callable实现异步处理SpringBoot基于Java的线程池管理,提供了异步任务线程池的概念,本课程为读者分析了工作线程池以及异步任务线程池的区别,同时利用了自定义配置类的方式实现了异步线程池的定义。
0903_【掌握】WebAsyncTask为了方便异步线程的管理,开发者可以通过Spring所提供的WebAsyncTask任务类进行处理,本课程为读者讲解了局部异步线程配置的作用以及具体实现。
0904_【理解】DeferredResultJava中的线程执行存在有Runnable与Callable两种机制,本课程主要为读者分析了Runnable实现的异步线程中所存在的问题,并使用了DeferredResult工具类保证了Runnable线程的正常执行。
0905_【掌握】SpringBoot异步任务异步任务是一种在后台运行的线程结构,可以在不影响用户响应的情况下执行某些后台处理,本课程为读者分析了异步请求以及异步任务的区别,并且通过具体的程序代码实现了异步任务的开发与使用。
0906_【掌握】响应式编程简介JDK1.9开始支持了ReactiveStreams响应式编程,随后Spring也提供了Reactor编程模型,在SpringBoot中又推出了WebFlux,在本课程中为读者分析了响应式编程的发展历史,同时通过对比给出了SpringMVC与WebFlux实现区别。
0907_【理解】WebFlux终端响应WebFlux基于Reactor技术实现,在开发中可以直接以启动一个运行终端进行请求处理,本课程通过具体的开发步骤,讲解了SpringBoot项目引入webflux依赖以及Reactor程序的开发与运行。
0908_【理解】SpringBoot整合WebFluxSpringBoot为了便于异步处理,提供了更加方便的WebFlux整合支持,本课程通过具体的程序代码讲解Action与WebFlux的整合操作。
0909_【理解】Flux返回集合数据Mono与Flux是Reactor开发框架中所提供的两种返回处理操作类,本课程为读者分析了这两个类的区别,并且通过实例讲解了如何基于Flux结构返回List与Map集合。
0910_【理解】WebSocket处理支持内部提供了WebSocket异步处理支持,本课程结合WebSocket客户端实现了Reactor中的WebSocket程序数据交互。
0911_【理解】RSocket简介RSocket是一种新型的通信协议,在本课程中为读者分析了传统的HTTP协议存在的问题,并且讲解了RSocket协议的主要特点。
0912_【理解】RSocket基础开发RSocket提供了多种编程技术的实现方案,本课程中将通过一个Java程序代码,完整的分析了RSocket程序的基本开发,同时分析了四种数据处理操作方法的使用。
0913_【理解】搭建RSocket服务端RSocket需要进行各种不同的数据处理模式,同时基于SpringBoot可以方便的实现RSocket服务开发,本课程结合常用的业务处理操作,为读者通过实例分析了RSocket服务的搭建。
0914_【理解】搭建RSocket客户端RSocket客户端基于CBOR实现服务端数据交互,本课程讲解了客户端的编码器与解码器配置,同时利用JUnit实现了RSocket远程服务调用。
0915_【理解】RSocket文件上传RSocket的二进制传输支持对于文件的上传操作也极为方便,本课程为读者分析了RSocket文件上传的基本流程,并且通过程序实现了文件的上传与保存处理。
0916_【理解】基于RSocket开发WebSocketRSocket中支持有WebSocket通信实现,开发者可以直接通过修改SpringBoot配置文件的transport属性实现WebSocket通讯,本课程通过具体的应用实例为读者讲解了WebSocket服务端开发,并通过Vue.JS实现了RSocket-WebSocket-Client客户端调用。
1001_【掌握】自动装配简介SpringBoot本着“约定优与配置”的原则,提供了自动装配处理机制,在本课程中为读者分析了自动装配的作用,并基于Redis自动装配进行了说明。
1004_【理解】application.yml配置提示为了便于SpringBoot程序开发,在SpringBoot中会针对于配置Bean提供有配置提示的功能,本课程为读者讲解了如何在已有的程序中实现自动提示的处理操作。
1005_【理解】自定义Starter组件一个符合于SpringBoot装配的模块一定要提供有大量的自动装配处理,本课程基于已经实现的自动配置模块实现打包处理,并在其他项目中实现自动配置管理。
1006_【理解】SpringBoot启动核心SpringBoot设计极大的简化了开发者的项目配置难度,其利用大量的“零配置”形式可以方便的实现Bean注册管理,本课程从宏观的角度为读者介绍了核心启动类以及启动注解的作用。
1007_【理解】SpringApplication构造方法SpringApplication是整个SpringBoot结构中的核心程序类,本课程通过源代码的组成分析了SpringApplication的基本执行流程,同时分析了SpringApplication类中核心构造方法源代码的功能。
1009_【理解】启动内置WEB容器SpringBoot为了便于启动容器的统一管理,提供了ConfigurableApplicationContext接口,本课程通过该接口实例的创建分析了SpringBoot中WEB容器的启动配置。
1010_【理解】AbstractApplicationContext.refresh()方法Spring容器中需要维护大量的程序Bean,虽然SpringBoot不再需要进行手工的配置,但是其内部依然会有大量的Bean、事件与资源管理配置,本课程为读者展示了容器刷新源代码的定义,并分析了其操作的组成。
1011_【理解】SpringBootCLI配置SpringBootCLI是一个简化程序运行的处理工具,本课程为读者介绍了SpringBootCLI工具的作用,并演示了该工具的下载与安装操作。
1012_【理解】使用Groovy开发SpringBoot应用Groovy是一种简化的Java脚本编程,本课程通过Groovy实现了SpringBoot中的控制器定义,并结合SpringBootCLI实现了项目的运行。
1013_【理解】Groovy开发SpringBoot项目SpringBootCLI内部提供有大量的项目运行与构建工具,本课程为读者介绍了常用的工具命令,并实现了Maven以及Gradle项目的快速构建。
1102_【掌握】基于Bean配置Druid使用druid-spring-boot-starter模块虽然可以很方便的实现Druid数据源的配置,但是考虑到实际开发中的灵活性,还是建议开发者手工配置Druid应用环境,本课程采用了原始的druid依赖库并基于Bean配置的方式实现了Druid连接池的配置。
1104_【掌握】WEB访问监控Druid自带了WEB环境监控,可以对用户的每一次请求路径以及处理性能进行统计记录,本课程讲解了如何在项目中实现WEB信息、Session以及URI监控的开启。
1105_【掌握】SQL监控为了完成项目所需要的业务往往需要执行大量的SQL操作,Druid提供了SQL执行次数的统计以及性能分析,本课程讲解了如何在项目中开启SQL监控操作。
1106_【掌握】SQL防火墙SQL防火墙可以有效的保证程序出现非法SQL时进行拦截,本课程为读者介绍了Druid提供的SQL防火墙规则,并且通过实例实现了SQL防火墙的配置与操作拦截。
1107_【掌握】Spring监控Druid提供了Spring监控支持,可以直接依赖AOP定义监控切面,并根据切面获取相应的监控数据,本课程实现了Druid中的Spring监控配置。
1108_【掌握】Druid日志记录Druid支持有日志的存储记录支持,开发者可以利用日志进行程序问题的分析,本课程基于Logback日志组件,实现了一个慢SQL日志的记录操作。
1109_【掌握】Spring整合MyBatisMyBatis是项目开发中最为常用的ORM组件,在SpringBoot中也提供了非常方便的MyBatis整合开发,本课程为读者讲解了SpringBoot整合MyBatis的操作实现。
1110_【掌握】Spring整合MyBatisPlusMyBatisPlus提供了与SpringDataJPA类似的结构,可以大量简化MyBatis重复开发,本课程基于SpringBoot开发框架引入了MybatisPlus,并实现了基本CRUD操作。
1111_【掌握】基于Bean模式整合MyBatisPlus组件开发者在实际开发中会存在有MyBatisPlus手工配置的需要,所以在本次课程中将废弃mybatis-plus-boot-starter依赖,并通过Bean的方式实现组件的手工配置。
1112_【掌握】AOP事务处理Spring提供了良好的AOP事务支持,由于SpringBoot倡导零配置,所以可以基于Bean方式配置处理,本课程实现了SpringBoot中的事务配置应用。
1113_【掌握】多数据源操作简介利用Bean方式可以在项目运行容器内定义若干个DataSource数据源,这样就要在数据库操作时动态的实现数据源的切换操作,本课程为读者分析了多数据源配置的意义,以及在Spring中实现动态数据源切换的设计原理。
1114_【掌握】配置多个Druid数据源SpringBoot所提供的Druid自动装配处理机制中提供了多数据源的配置支持,本课程将基于application.yml以及DruidDataSourceBuilder类实现项目中多个数据源的配置。
1115_【掌握】动态数据源决策项目中的多个DataSource需要根据不同的请求切面实现切换处理,在本课程中将基于AbstractRoutingDataSource并结合AOP实现了动态数据源的切换操作。
1116_【掌握】MyBatisPlus整合多数据源有了数据源的动态切换后,就可以基于此机制实现MyBatis与动态数据源的整合处理,在本课程中基于DAO层实现动态数据源的切面管理,并实现数据查询操作。
1117_【掌握】JTA分布式事务简介程序中采用多数据源管理后就需要进行分布式的事务控制,本课程为读者讲解了分布式事务的主要作用,同时分析了Atomikos实现原理
1118_【掌握】AtomikosDataSourceBeanDruid数据源提供了XA协议支持,在本课程中将修改已有的数据源配置,并基于AtomikosDataSourceBean类实现了数据源配置。
1119_【掌握】多数据源事务管理Spring可以基于AOP实现事务操作的切面控制,而在多数据源的程序管理中,需要通过不同的数据源实现事务管理,本课程基于MyBatis事务标准实现了一个自定义事务管理器,并基于事务管理工厂实现了事务对象获取。
1120_【掌握】MyBatis整合分布式事务分布式事务需要整合在MyBatis配置类中,在本课程中实现了事务组件的整合,随后又基于数据的批量更新操作演示了分布式事务的具体实现效果。
1208_【掌握】搭建OAuth2基础服务OAuth2是一种协议标准,可以通过手工或已有安全框架来实现,在SpringSecurity中提供了OAuth2的整合支持,在本课程中将通过基础依赖实现OAuth2的基本操作。
1209_【掌握】ClientDetailsService基于SpringSecurity实现的OAuth2,可以结合SpringSecurity已有的结构特点进行代码管理,在本课程中会为读者讲解第三方客户端接入数据管理操作结构。
1210_【掌握】使用数据库存储Client信息实际应用中会存在有大量的第三方客户端整合服务,那么此时就需要通过数据库来实现Client数据管理,本课程讲解了client数据表的创建,并且基于SpringDataJPA实现了Client数据层的处理。
1213_【掌握】OAuth2客户端访问SpringSecurity除了支持有OAuth2服务搭建之外,也可以直接实现客户端的创建,在本课程中将通过具体的操作实例讲解具体的OAuth2服务的调用处理。
1214_【理解】Vue.JS整合OAuth2认证现代的大型项目开发都会对程序实现进行有效的前后端分离,在本课程中将通过Vue.JS并结合WebPack实现OAuth2接入实现,并通过Axios实现了资源数据的获取处理。
1216_【掌握】JWT结构分析JWT为了可以包含更多的数据信息,同时也为了便于数据的安全以及解析处理,提供了完善的数据存储结构,本课程为读者分析了JWT中数据组成规范,同时讲解了实际项目开发中JWT数据配置。
1217_【掌握】JWT数据服务JWT组件为了便于用户进行JWT数据的处理,提供了良好的支持,在本课程中将基于业务层的管理机制实现JWT数据的创建、解析、验证以及刷新处理。
1218_【掌握】Token拦截JWT数据直接决定了所调用的目标微服务能否正常执行,所以需要通过拦截器的机制进行Token存在以及有效性的判断处理,本课程通过具体的代码实现了访问拦截。
1221_【掌握】Shiro用户认证为了便于Shiro的理解,在本次课程中将基于固定认证信息的模式实现Realm数据管理,同时基于过滤器配置的方式实现安全检查。