SSM(Spring, Spring MVC, MyBatis)开发实战

SSM是当今Java项目开发行业使用官方的开发框架整合,其在Spring框架的基础上进行了有效的功能扩充,使其可以轻松的实现企业级系统平台的搭建。本书在《Spring开发实战》图书的基础上,继续深入编写,除了包含有基础的SSM整合开发之外(SpringMVC + MyBatis),还扩展了SSM开发的技术范围(SpringSecurity、MyBatis-Plus、Spring Batch),并且给出了三个完整的案例以及综合项目实战。

SpringMVC因其稳定性与安全性在JavaWeb开发中使用较多,不仅可以实现标准MVC设计架构,同时也支持有当前流行的前后端分离架构设计,掌握其与JavaWeb开发之间的关联是学习SpringMVC的核心方法,同时又分析了前后端分离架构中的数据传输模式,以及SpringMVC核心源代码的组成,满足了读者代码开发与技术面试的需要。

认证与授权是所有系统中的核心话题,也是数据安全的核心表现,SpringSecurity提供了认证与授权开发标准,本书中采用单WEB实例的方式讲解了SpringSecurity的使用以及各个组成单元的配置,这样读者可以在《Spring Boot开发实战》图书中继续学习Spring Security的前后端分离设计技术以及OAuth2单点登录技术。

MyBatis是于JPA齐名的ORMapping开发组件,由于开发环境的需要,许多的互联网公司都会大量的采用该框架进行代码的编写,而掌握MyBatis的开发机制与实现原理就是 Java开发者所必须的一项技能了,在本书中通过MyBatis技术的官方文档指引,详细的解释了MyBatis各类组件的使用,不仅可以满足于开发需要,也满足于技术面试的需要。同时考虑到SpringDataJPA技术的影响,又深入研究了MyBatis-Plus插件的使用。

随着数据时代的到来,批处理已经成为了行业中的技术开发标配,本书安排了SpringBatch批处理开发技术,在该技术中会采用特定的处理逻辑结构实现数据处理,同时又可以保证异常的有效管理,是从事一些对账系统相关行业的重要技术保障。

SSM作为主流的开发技术,要想充分的掌握其使用,必然要进行大量的实战演练,为满足高校教师的教学需要,本书特备了三个综合案例,利用这些案例详细的简介了SpringMVC深入、SSJ(Spring + SpringMVC + JPA)框架整合应用以及SSM(Spring + SpringMVC + MyBatis)框架整合应用,同时又为读者安排了一个综合性的项目演练,而这套完整的项目所使用的技术架构为:Bootstrap + jQuery + Spring + SpringMVC + SpringSecurity + MyBatis + MyBatis-Plus。

本书附有配套视频、源代码、习题、教学课件等资源。为了帮助读者更好地学习本书,作者还提供了在线答疑。

本书适合作为高等教育本、专科院校计算机相关专业的教材,也可供广大计算机编程爱好者自学使用。

我们在用心做事,做最好的教育,写最好的图书。

沐言科技教学总监 —— 李兴华

经过了四个月的图书编写,《SSM开发实战》这本图书终于完工了,这也是我在两年的创作生涯中完成的第7本图书,而之所以将这些培训的内容全部都编写出来,也是为了帮助大家更好的解决就业问题。

简单算了下,这应该已经是我所出版的第22本图书了,20年的编程培训讲师生涯,让我彻底明白技术并不是我们教育的全部,而是应该更多的是教给大家良好的学习方法,让大家可以从最初的学习中慢慢建立起自学研究的意识,从内而发的产生一种学习的动力,这才是教育工作者所能达到的理想教学。我不属于任何的高校,所以经常说自己是一名“草根教育者”,或许是这种“草根”的心态让我可以准确的把握住每一位学生的学习诉求,才能让我的教学如此接地气。

这本SSM图书的完结,其实也标志着“Java程序员”自学体系的完成,而后我的任务就要开始进入到“Java架构师”自学体系的图书创作之中,整体的图书出版计划如图所示。这套自学体系从零基础开始讲起,逐步深入且完整的讲解Java语言之中的各项开发技术,并且通过一系列的课后习题以及项目案例带领读者掌握完整的Java就业技能。

其实要想完整的编写完这样一套图书,本身并不容易,不仅需要创作者有着扎实的技术功底,同时也要有对技术的良好认知,更是要清楚的把握住每一位自学者的诉求以及学习心里,所以在整个一套图书的创作中,我们秉持着实用的观念,让每一个知识点都可以灵活的在读者眼前跳动,采用平民化的文字编写,并辅以大量的图示,但是仅仅依靠这些,我们害怕有读者依然是无法掌握这些知识,所以又在每一个章节处配置了完备的教学视频,在读者遇见概念理解或操作困难时,可以直接通过视频获取到解决方案,从而扫平学习中可能出现的各种问题,让我们的学习可以变得更加丝滑。

在Java项目开发中会存在有大量的Java框架整合设计需要,而随着技术的发展与时间的流逝,当前最稳定的开发整合就是SSM(Spring + SpringMVC + MyBatis),使用Spring容器进行有效的Bean管理支持,SpringMVC实现MVC开发框架,并基于MyBatis实现数据层的开发,其整体的开发结构依然为《JavaWeb开发实战》书中所学习到的MVC设计模式

当然随着技术的发展以及技术开发要求的不断提升,SSM开发也发生了一些变化,一方面为了简化业务层以及数据层的重复代码编写,项目中会使用Mybatis-Plus开发插件,而为了保证SpringMVC的资源管理安全性,也追加了Spring Security安全框架的使用,考虑到数据批处理的需求,Spring也提供了SpringBatch数据处理技术,而这些全部都在本书的讲解范围之内,只要读者掌握了《Spring开发实战》的内容,那么就可以轻松的切换到SSM课程的学习之中。

由于Java学习体系的庞大型,所以让很多要学习Java技术的同学望而生畏,读者也可以发现,我们这一套学习体系也涉及到了大量的图书,图1-1展示了知识结构的联系,而这本SSM图书的内容包含如下。

1章:SpringMVC通过XML与Bean两种配置模式讲解了SpringMVC的启用,在讲解时基于JakartaEE标准进行了横向对比与实现分析,考虑到当前前后端分离架构的设计需要,重点讲解了Jackson依赖库以及JSON数据接收与响应处理问题,最后是对整个SpringMVC的核心源码进行解读,理清了其与Spring框架之间的联系。

2章:SpringSecurity完善的项目需要有效的资源防护,安全的核心就在于认证与授权,考虑到Spring的原生开发,可以直接使用SpringSecurity进行安全管理,在本章中进行了SpringSecurity开发结构的完整梳理,并且基于JPA框架实现了数据持久化管理。

3章:MyBatis轻量级的ORM开发组件,通过该组件的基本使用与内部实现结构进行了组件的使用分析,同时讲解了动态SQL、数据缓存、拦截器、鉴别器、数据关联等核心技术,并且基于Spring框架实现了MyBatis整合。

4章:MyBatisPlusMyBatis中著名的开发插件,可以有效的提高数据层代码的开发效率,同时该组件中又提供了大量的丰富的配置支持,不仅简化了数据层开发,同时也简化了业务层的开发,是开发中必不可少的一项技术支持。

5章:SpringBatch数据批处理支持,提供了完善的数据批处理操作流程,在本章中对SpringBatch中的每一个技术项进行了完整的拆分,并给出了完整的批处理操作模型。

6章:SpringMVC拦截案例。考虑到在后续的SpringBoot以及SpringCloud项目开发中,会出现有大量的安全处理逻辑,所以对于拦截器的使用就需要做进一步的应用扩展。本章为一个完整的项目案例,从项目搭建,一直到项目的模块化设计,都进行了详细定义,并基于自定义注解的方式实现了数据验证的处理操作。

7章:SSJ框架整合案例。基于Spring + SpringMVC + JPA开发框架实现了一个完整的数据CRUD处理,考虑到与实际项目开发的联系,本次还使用了SpringCache + Memcached缓存技术进行了分类项的梳理,同时分析了缓存穿透问题以及所带来的影响,因为是一个整体的应用案例,所以使用了Bootstrap为读者进行了完整的前端页面设计。

第8章:前后端分离项目架构。SpringMVC本身带有前后端分离架构项目的支持,所以本章基于Vue.JS + ElementUI进行了前端项目的编写,并且使用标准SSM(Spring + SpringMVC + MyBatis)开发了后端接口,该课程可以衔接《Spring Boot开发实战》一书的内容。

在本书编写时,是按照框架的结构进行定义的,虽然在一些知识点后已经设置了相关的习题,但是考虑到与实际项目开发的联系,本书还是提供了一个完整的综合性项目,而该项目使用的技术为:Bootstrap + jQuery + Spring + SpringMVC + MyBatis-Plus,而该项目的内容并未写在图书上,而是以视频的形式给出。

本书特点:

1、   图示清晰:为了帮助读者轻松的跨过技术学习的难关,更好的理解架构的思想以及技术的本质,本书会采用大量的图形进行分析,全书的图形覆盖率达到了平均每节0.8个,几乎每一个小节都会提供有图形解释;

2、   注释全面:初学者对于技术的学习难免会出现空白点,为了便于读者理解程序代码,在全书中出现的代码覆盖率达到了99%以上,真正帮助了为学习者扫平障碍的目的;

3、   案例实用:所有的案例均来自实际项目开发中的应用架构,不仅方便读者学习,同时也为工作带来全面帮助;

4、   层次分明:每一节技术知识,都会根据需要划分为“掌握、理解、了解”三个层次,便于读者安排学习顺序;

5、   就业面试:框架的源代码一直都是技术面试的重要环节,所以在讲解过程中对于核心的开发框架都进行了核心源码解读,这样的讲解方式不仅可以帮助有效的学习,同时也增加了读者面试成功的几率;

6、   视频全面:每一个小节的知识都包含有一个完整的视频讲解,通过手机扫码可以解决你学习中出现的各种问题;

7、   结构清晰:按照知识点的作用进行结构设计,充分的考虑到了学生认知模式的需要,降低学习难度;

8、   架构领先:基于Gradle构架工具与IDEA开发工具进行讲解,符合当今企业技术的使用标准;

9、   无障碍阅读:对可能产生的疑问、相关概念的扩展,都会通过“提示、注意、问答”进行说明;

10、 教学支持:高校教师凭借教师资格可以向出版社申请教学PPT、教学大纲以及教学自测习题。

11、 代码完整:每一节的课程均提供有代码文件或者是项目工程文件,并保证代码可以正常运行;

最后的最后我想说的是,因为写书与各类的公益技术直播,我错过了许多与我孩子和家人欢聚的时光,我内心感到非常的愧疚,但是我希望不久的未来我能为我的孩子编写一套属于他自己的编程类图书,帮助所有有需要的孩子进步,因为我喜欢研究编程技术,也勇于自我突破,如果你也是这样的一位软件工程师,也希望加入到我们这个公益技术直播的行列之内,让我们抛开所有的商业模式的束缚,一起将自己学到的技术传播给更多的爱好者,以我们微薄之力推动整个行业的技术发展,就如同我说过的,教育的本质是分享,并不是赚钱的工具。

图书目录

第1章 SpringMVC    1
1.1 WEB开发与MVC设计模式    1
1.1.1 搭建SpringMVC项目    2
1.1.2 配置SpringMVC开发环境    6
1.1.3 SpringMVC编程入门    8
1.1.4 ModelAndView    10
1.2 WebApplicationContext    12
1.2.1 WebApplicationInitializer    15
1.2.2 AbstractAnnotationConfigDispatcherServletInitializer    17
1.3 路径与参数接收    19
1.3.1 SpringMVC与表单提交    20
1.3.2 @RequestParam    21
1.3.3 @PathVariable    22
1.3.4 @MatrixVariable    23
1.3.5 @InitBinder    25
1.3.6 @ModelAttribute    27
1.3.7 RedirectAttributes    28
1.4 对象转换支持    29
1.4.1 @RequestBody    32
1.4.2 @ResponseBody    33
1.5 WEB内置对象    36
1.5.1 @RequestHeader    37
1.5.2 @CookieValue    38
1.5.3 session管理    40
1.6 WEB开发支持    41
1.6.1 文件上传支持    42
1.6.2 WEB资源安全访问    44
1.6.3 统一异常处理    47
1.6.4 自定义页面未发现处理    48
1.6.5 拦截器    49
1.6.6 WebApplicationContextUtils    51
1.6 DispatcherServlet源码解读    53
1.6.1 初始化Web应用上下文    54
1.6.2 HandlerMapping映射配置    56
1.6.3 HandlerAdapter控制层适配    58
1.6.4 doService()请求分发    63
1.6.5 doDispatch()请求处理    66
1.7 本章概览    69
1.8 课程案例    70

第2章、SpringSecurity    1
2.1、WEB认证与授权访问    1
2.1.1、SpringSecurity快速启动    2
2.1.2、UserDetailsService    5
2.1.3、认证与授权表达式    7
2.1.4、SecurityContextHolder    8
2.1.5、SpringSecurity标签支持    10
2.2、SpringSecurity注解支持    11
2.3、CSRF访问控制    14
2.4、扩展登录与注销功能    16
2.5、过滤器    18
2.5.1、Session并行管理    19
2.5.2、RememberMe    21
2.5.3、验证码保护    25
2.6、投票器    30
2.6.1、本地IP直接访问    31
2.6.2、RoleHierarchy    33
2.7、本章概览    34

第3章 MyBatis    1
3.1 MyBatis编程起步    1
3.1.1 开发MyBatis应用    2
3.1.2 MyBatis连接工厂    5
3.1.3 别名配置    7
3.1.4 获取生成主键    7
3.2 MyBatis数据操作    9
3.2.1 MyBatis数据查询操作    12
3.2.2 ResultHandler    14
3.3、动态SQL    15
3.3.1 if语句    16
3.3.2 choose语句    18
3.3.3 set语句    19
3.3.4 foreach语句    20
3.4 数据缓存    22
3.3.1 一级缓存    22
3.3.2 二级缓存    24
3.3.3 Redis分布式缓存    26
3.5 拦截器    30
3.5.1 Executor执行拦截    32
3.5.2 StatementHandler执行拦截    34
3.6 ResultMap    36
3.6.1 调用存储过程    37
3.6.2 鉴别器    39
3.6.3 类型转换器    43
3.7 数据关联    47
3.7.1 一对一数据关联    47
3.7.2 一对多数据关联    50
3.7.3 多对多数据关联    54
3.8 Spring整合MyBatis    61
3.8.1 使用注解配置SQL命令    67
3.8.2 SQL语句构建器    69
3.8.3 MyBatis代码生成器    70
3.9 本章概览    73
3.10 课程案例    74

第4章 MyBatisPlus    1
4.1 MyBatis-Plus数据操作    1
4.1.1 MyBatis-Plus编程起步    2
4.1.2 BaseMapper接口    5
4.1.3 条件构造器    8
4.2 GlobalConfig    10
4.2.1 逻辑删除    11
4.2.2 数据填充    12
4.2.3 主键策略    14
4.2.4 SQL注入器    18
4.3 MyBatis-Plus插件    20
4.3.1 分页插件    22
4.3.2 乐观锁插件    23
4.3.3 防全表更新与删除插件    24
4.3.4 动态表名插件    26
4.3.5 多租户插件    27
4.3.6 SQL性能规范插件    29
4.4 数据安全保护    30
4.5 ActiveRecord    33
4.6 通用枚举    34
4.7 IService    35
4.8 MyBatis-Plus逆向工程    37
4.9 本章概览    38
4.10 综合项目实战

第5章 SpringBatch    1
5.1 SpringBatch快速上手    1
5.1.1 SpringBatch数据存储结构    2
5.1.2 SpringBatch编程起步    5
5.1.3 JobParameters    9
5.2 Job配置    10
5.2.1 Job参数验证    12
5.2.2 Job监听器    13
5.2.3 作业退出    15
5.3 Step配置    16
5.3.1 Step监听器    18
5.3.3 Flow    20
5.3.3 JobExecutionDecider    21
5.3.4 异步作业    22
5.3.5 Tasklet    23
5.4 批处理模型    25
5.4.1 LineMapper    26
5.4.2 FieldSetMapper    27
5.4.3 ItemReader    29
5.4.4 ItemProcessor    32
5.4.5 ItemWriter    34
5.4.6 创建批处理作业    37
5.4.7 操作监听    39
5.5 Chunk    40
5.5.1 ChunkListener    41
5.5.2 Chunk事务处理    43
5.5.3 异常跳过机制    44
5.5.4 错误重试机制    47
5.6 SpringTask    49
5.6.1 SpringTask间隔调度    49
5.6.2 CRON表达式    51
5.6.3 SpringTask任务调度池    52
5.7 本章概览    53

第6章 SpringMVC拦截器与数据验证案例    1
6.1 拦截器案例实现说明    1
6.2 搭建案例开发环境    3
6.3 请求包装    10
6.4 定义基础数据验证规则    13
6.5 获取验证规则    19
6.6 数据验证处理    23
6.7 错误展示    27
6.8 上传文件验证    32
6.9 案例总结    37

第7章 SSJ开发框架整合    1
7.1 SSJ案例实现说明    1
7.2 搭建SSJ开发环境    3
7.3 分类数据列表业务    16
7.4 强制刷新分类数据缓存    19
7.5 分类数据增加业务    20
7.6 图书业务CRUD操作    22
7.6.1 增加图书数据    27
7.6.2 显示图书详情    31
7.6.3 修改图书数据    33
7.6.4 删除图书数据    36
7.7、案例总结    37

第8章 前后端分离项目架构    1
8.1 前后端分离技术架构    1
8.1.1 搭建案例开发环境    3
8.1.2 后端业务改造    7
8.1.3 HTTPie测试命令    13
8.2 图书分类管理    14
8.2.1 增加图书分类    16
8.2.2 强制刷新分类数据缓存    17
8.3 图书数据管理    19
8.3.1 增加图书数据    22
8.3.2 编辑图书数据    27
8.3.3 删除图书数据    30
8.4 案例总结    32

图书配套视频列表

0101_【掌握】WEB开发与MVC设计模式
WEB是互联网开发中最为常见的服务机制,在长期的技术发展中,WEB开发架构不断的发生着改变,在Java开发行业中主流的WEB开发全部都基于MVC设计模式,本课程基于MVC的设计与开发模式进行了总结。

0102_【掌握】搭建SpringMVC项目
SpringMVC是构建在Spring框架上的WEB应用架构,所以需要保证项目内部已经提供了Spring的基础依赖模块,本课程通过IDEA工具,并基于Gradle构建工具搭建了SpringMVC项目的基础环境以及所需的核心依赖配置。

0103_【掌握】配置SpringMVC开发环境
SpringMVC是构建在传统JavaWEB结构之上的开发框架,为便于读者完全的理解SpringMVC与WEB开发的关联,本次将基于传统的XML配置方式进行项目配置。

0104_【掌握】SpringMVC编程入门
SpringMVC的程序开发是以Action结构为核心实现控制器的设计功能,本课程首先为读者讲解了SpringMVC的基本运行原理,而后通过具体的案例实现了其于JavaWEB已有开发结构的整合。

0105_【掌握】ModelAndView
ModelAndView是实现模型层与视图层之间数据传递的核心类结构,本课程为读者分析了该类的主要作用以及操作方法,同时分析了Model接口的作用。

0106_【理解】WebApplicationContext
SpringWEB支持是基于WEB容器实现了Spring容器的启动,而这启动的核心主要是基于WebApplicationContext接口完成的,本课程分析了ContextLoaderListener监听器类与WebApplicationContext接口之间的关联。

0107_【掌握】WebApplicationInitializer
Servlet提供了组件自动注册的支持,在SpringWEB中为了实现可编程的WEB服务整合,内置了ServletContainerInitializer接口的实现子类,本课程通过spring-web.jar包中的集成文件分析了其运行机制,并通过WebApplicationInitializer接口,实现了基于Annotation模式的SpringWEB启动配置。


0108_【掌握】AbstractAnnotationConfigDispatcherServletInitializer
SpringWEB在设计时,考虑到了代码的规范化开发设计,除了可以由开发者自行实现WebApplicationInitializer接口子类进行配置类注册之外,也提供了一系列的抽象类结构,依据特定的抽象方法进行配置,本课程为读者分析了该操作类的使用。


0109_【掌握】@RequestMapping注解
@RequestMapping注解是进行WEB请求方法与路径映射的核心注解,本课程为读者分析了该注解的作用,同时实现了父路径定义以及关联注解的使用。


0110_【掌握】SpringMVC与表单提交
表单是动态WEB参数传递的核心单元,SpringMVC的运行遵从于JavaWEB处理标准,所以也可以通过表单实现请求数据的发送,本课程通过案例讲解了此操作实现。


0111_【掌握】@RequestParam
动态WEB的核心流程是进行用户请求参数的处理,在实际的项目开发中,为了保证用户请求参数的正确接收,可以通过@RequestParam注解进行标记,本课程分析了该注解的组成以及使用,同时分析了默认值的作用。


0112_【掌握】@PathVariable
HTTP之中的请求参数可以通过表单或地址重写的方式进行传输,然而为了便于WEB服务接口的设置,也可以使用路径地址传递参数,在SpringMVC中为了便于路径地址的标记,提供了@PathVariable注解,本课程通过实例分析了该注解的使用。


0113_【掌握】@MatrixVariable
请求参数的传递是动态WEB开发的核心基础所在,在SpringMVC中考虑到参数信息传递的便捷性,提供了矩阵型的参数解决方案,本课程为读者讲解了矩阵参数的使用以及如何通过SpringMVC配置类实现矩阵参数的传递启用。


0114_【掌握】@InitBinder
SpringMVC在设计中提供了非常丰富的数据转换处理逻辑,但是对于日期或日期时间的转换则就需要开发者自行配置格式化机制,本课程分析了@InitBinder注解的作用,并且通过实例利用LocalDate与LocalDateTime实现了日期数据的接收。


0115_【理解】@ModelAttribute
为了便于请求处理以及视图配置的有效管理,在SpringMVC中提供了模型数据与视图跳转分离的机制,本课程为读者讲解了这种设计架构的主要作用,并且通过具体的案例演示了@ModelAttribute注解的使用。

0116_【掌握】RedirectAttributes
在一些特殊实现机制之中,需要进行控制层之间的跳转以及参数的传递操作,所以在SpringMVC中提供了两种跳转支持标记,同时在跳转中为了解决客户端跳转参数传递问题,又扩展了RedirectAttributes属性传递类,本课程为读者分析了该类的使用。

0117_【掌握】请求参数与对象转换
对象是Java之中的核心数据管理结构,不管是数据库持久化操作,还是缓存管理,都是以对象为核心展开的,为了便于对象实例化管理,SpringMVC中提供了参数的反射对象实例化支持,本课程通过类关联结构展示了这种操作的使用。


0118_【掌握】@RequestBody
对象是MVC设计开发中最为常见的组成单元,在控制器接收对象时也考虑到了JSON结构的处理操作,并且提供了@RequestBody的转换注解,本课程为读者分析了JSON数据传递的设计意义,并通过实例讲解了@RequestBody注解的具体使用。


0119_【掌握】@ResponseBody
SpringMVC除了可以接收JSON数据之外,也可以采用JSON数据的形式进行请求的响应处理,为此提供了@ResponseBody对象转换注解,本课程讲解了该注解的使用。

0120_【掌握】RequestContextHolder
JavaWEB开发的过程中,主要依靠的是若干个内置对象实现的,尽管在SpringMVC中已经简化了此类操作的出现,但是其依然提供有对外的封装处理,以满足用户的开发需要,本课程讲解了SpringMVC中对内置对象的包装以及不同的获取方式。

0121_【掌握】@RequestHeader
HTTP除了核心的请求数据之外,最重要的就是头信息的内容,为了便于头信息的接收,SpringMVC提供了@RequestHeader注解,本课程通过案例分析了该注解使用。

0122_【掌握】@CookieValue
Cookie是WEB开发中的重要组成,基于Cookie可以实现客户端浏览器中的重要数据存储,SpringMVC可以通过@CookieValue注解实现Cookie数据的获取处理,本课程通过实例讲解了在SpringMVC中的Cookie设置与获取操作的实现。

0123_【掌握】session管理
Session是HTTP中维护用户状态的核心处理机制,SpringMVC中除了可以采用内置对象的方式进行session数据处理外,也提供了更加方便的管理机制,本课程讲解该机制实现的注解以及处理支持类,并通过实例为读者讲解了session数据的存取操作。


0124_【掌握】文件上传支持
文件上传属于WEB开发中的常见功能,JakartaEE之中对文件上传有了专属的支持,本课程为读者分析了文件上传操作的实现结构,并通过具体的代码讲解分析了文件上传的配置,以及如何在Action控制器中通过MultipartFile接收上传文件


0125_【掌握】WEB资源安全访问
WEB开发中除了核心的后台代码之外,还会存在有许多的前端资源,为了保证前端资源的安全性,往往会将其保存在WEB-INF目录之中,SpringMVC中提供了资源映射的支持以便于访问,本课程为读者分析了资源的安全存储与访问映射配置。

0126_【掌握】统一异常处理
项目开发中经常会产生一系列的异常信息,为了便于异常出现后进行统一的页面显示,可以基于控制层切面的方式进行异常捕获与统一显示,本课程通过实例讲解了@ControllerAdvice注解的使用与异常捕获。

0127_【掌握】自定义页面未发现处理
在WEB程序访问中,经常会出现由于错误的路径而返回404错误的问题,除了使用传统的web.xml配置外,也可以基于DispatcherServlet继承的结构进行自定义配置,本课程通过实例分析了404页面未发现处理操作的实现。

0128_【掌握】拦截器
SpringMVC是基于Servlet结构上的应用,所以其无法在Action处理前通过过滤器进行拦截处理,所以提供了与之相近的拦截器的概念,本课程为读者分析了拦截器的运行机制,并通过具体的实例分析了拦截器的使用以及HandlerMethod类的作用。

0129_【掌握】WebApplicationContextUtils
为了便于各类WEB组件使用Spring上下文获取所需要的Bean实例,SpringMVC提供了一个WebApplicationContextUtils工具类,利用该类可以在过滤器、监听器或者其他Servlet中实现Spring容器处理操作,本课程讲解了此类的相关使用案例。


0130_【理解】DispatcherServlet继承结构
DispatcherServlet是整个SpringMVC中的核心处理结构,所有的请求基于该Servlet进行分发控制,而要想更好的理解SpringMVC,就需要首先通过该类的继承结构分析其与Spring之间的关联,本课程通过源代码解析方式进行了该类的核心结构分析。


0131_【理解】初始化WEB应用上下文
SpringMVC构建在JavaWEB的结构之中,所以在容器启动前就需要获取到WEB的配置项,为此定义了专门的WEB应用上下文启动方法,本课程通过源码分析的形式为读者分析了SpringMVC容器的启动流程以及与Spring容器之间的操作关联。


0132_【理解】HandlerMapping映射配置
SpringMVC将控制层的处理方法以@RequestMapping注解的形式进行定义,为了提高控制器的处理速度,就需要在容器启动时将所有的地址映射信息取出,为了便于进行映射信息的维护,Spring提供了HandleMapping接口,本课程通过源代码的解析流程,分析了DispatcherServlet与HandleMapping映射处理之间的关联。


0133_【理解】HandlerAdapter控制层适配
ModelAndView是SpringMVC开发中控制层的返回实例,但是为了满足不同方法返回值的处理,SpringMVC提供了HandlerAdapter适配器支持类,本课程通过源代码的结构分析了HandlerAdapter继承结构、主要作用以及核心初始化流程。


0134_【理解】doService()请求分发
DispatcherServlet中提供了用户请求处理的方法支持,同时为了便于后续分发结构的管理,还会分别保存每一个请求的完整数据,本课程分析了doService()源代码结构,并对其中的核心代码的作用进行了说明。


0135_【理解】doDispatch()请求处理
SpringMVC的核心处理方法是doDispatcher(),本课程通过该代码的执行流程,分析了请求处理与响应逻辑,并结合之前的HandlerMapping以及HandlerAdapter接口功能分析了程序的执行过程。


0201_【掌握】SpringSecurity简介
在一个WEB应用之中除了核心的程序之外,还会包含有许多重要的数据资源,而为了安全的管理这些资源不被泄露,就需要按照既定的规则进行访问,而为了简化这一开发要求,可以使用SpringSecurity安全框架,本课程为读者介绍了该框架的作用。


0202_【掌握】SpringSecurity快速启动
SpringSecurity是一组依赖库,在项目之中进行引用后即可生效,本课程通过实例讲解了SpringSecurity开发所需要的环境配置以及WEB整合实现,并且基于一个基础的SpringMVC控制器实现资源保护处理。


0203_【掌握】UserDetailsService
SpringSecurity为了便于认证与授权信息的存储,提供了UserDetailsService管理接口,本课程为读者分析了该接口的作用,以及相关的UserDetails与GrantedAuthority接口的使用,并采用固定认证信息的方式实现了用户登录处理操作。

0204_【掌握】认证与授权表达式
认证只是对用户身份合法性的处理,而为了便于资源的有效管理,往往会结合授权管理机制,SpringSecurity为了便于授权访问,提供了授权配置方法,本课程为读者讲解了该方法的使用,并给出了该方法所支持的表达式语法。

0205_【掌握】SecurityContextHolder
SpringSecurity为了便于用户认证与授权数据的获取,提供了SecurityContextHolder上下文管理类,本课程讲解了该类的使用,并且通过实例分析了已登录用户与匿名用户获取到的认证数据信息的区别。

0206_【理解】SpringSecurity标签支持
完整的WEB页面需要根据用户认证与授权信息动态生成视图页面,为了便于相关信息的处理,SpringSecurity提供了专属的页面标签,本课程通过案例为读者讲解了这些标签的使用,并分析了其于Authentication之间的关联。

0207_【掌握】SpringSecurity注解支持
SpringSecurity为了增加其配置的灵活性,除了可以使用HttpSecurity进行映射路径的授权检测之外,也支持有注解配置的支持,本课程为读者分析了注解的开启配置,并通过了具体的应用案例实现了四个核心注解的使用分析。

0208_【掌握】CSRF访问控制
CSRF是一种潜在的安全漏洞,SpringSecurity中针提供了该漏洞的处理支持,本课程为读者分析了CSRF产生与该漏洞的解决方案,并通过HttpSecurity类提供的方法,实现了该机制的启用与关闭配置。

0209_【掌握】扩展登录与注销功能
每一个应用中都会提供有符合应用特色的登录页面,所以在SprignSecurity中支持开发者的登录页面扩展处理,同时对于登录首页、授权错误页都存在有配置上的支持,本课程在已有的程序架构上对登录与注销操作的功能进行了扩充。

0210_【掌握】过滤器
SpringSecurity的核心逻辑在于过滤链的处理支持,不同的验证模式会有专属的过滤器提供支持,本课程对已有的程序类进行了结构分析,同时解释了FilterChainProxy类的作用,并根据源码显式列出了内置过滤器处理类的名称以及主要作用。

0211_【掌握】Session并行管理
账户的安全是系统数据安全的核心步骤,SpringSecurity为了保证账户的安全,提供了并行Session管理的概念,本课程为读者分析了该操作的主要用途,同时通过具体的代码开发实现了用户数据的剔除处理。

0212_【掌握】RememberMe
为了简化用户登录认证的处理流程,SpringSecurity也支持有“记住我”的功能支持,本课程通过实例分析了该功能的启用,并结合MySQL数据库解决了RememberMe状态分布式数据存储的功能实现。

0213_【掌握】验证码保护
为了保证用户登录处理的安全性,也为了防止用户的账户被暴力破解,现代的开发中都会采用验证码保护的形式进行处理,本课程将对已有过滤器的结构进行扩展,并利用自定义的验证码组件实现了登录验证码的显式以及校验功能的开发。

0214_【掌握】投票器概述
SpringSecurity提供了完整的认证与授权检测,但是考虑到项目运行环境的不同,对于认证与授权的检测处理也进行了功能的扩充,提供了投票器的管理策略,利用投票器的方式可以在特定的环境下避免强制性的安全检查所带来的操作繁琐问题,本课程为读者分析了投票操作的意义,并分析了SpringSecurity中投票器处理类的作用。

0215_【掌握】本地IP直接访问
为了区分出内网用户与外网用户的访问,可以基于投票器管理机制,实现本地账户的免登录资源访问处理,本课程基于AccessDecisionVoter实现了自定义投票器的开发,并基于AccessDecisionManager子类实现了投票管理。

0216_【掌握】RoleHierarchy
为了更加明确的实现授权管理的配置,SpringSecurity支持了权限的层级配置,这样拥有高一级别的权限也可以直接进行低一级别的权限所对应资源的访问操作,本课程通过RoleHierarchy类并结合投票管理器实现了这一层级关系的设置。

0301_【掌握】MyBatis简介
MyBatis是当今互联网行业开发中使用较为广泛的ORM开发框架,其以高性能著称,同时又有着更加简单的设计架构,本课程为读者介绍了MyBatis框架的主要特点,同时帮助读者总结了MyBatis与SpringDataJPA技术之间的区别及联系。

0302_【掌握】开发MyBatis应用
MyBatis为第三方开源应用组件,开发者可以直接利用Gradle构建工具进行开发环境的搭建,本课程为读者讲解MyBatis项目环境的搭建,并分析了开发之中的核心单元组成,最后通过其实现了一个完整的数据增加操作。

0303_【掌握】MyBatis连接工厂
SqlSession是MyBatis的核心数据操作与事务控制处理接口,为了便于后续代码的讲解,本次将通过ThreadLocal对其使用进行封装,通过专属连接工厂类实现实例管理。

0304_【掌握】别名配置
Mapper文件中除了要定义使用的SQL命令外,还需要进行操作数据的配置,为了简化对象参数的配置,MyBatis提供了别名支持,本课程分析了别名的意义与配置启用。

0305_【掌握】获取生成主键
不同的业务存在有不同的主键生成模式,在数据表采用自动主键生成时,程序也需要及时获取到当前的数据ID,所以MyBatis提供了主键的获取机制,本课程通过实例为读者分析了两种主键获取机制的使用。

0306_【掌握】MyBatis数据更新操作
MyBatis提供了数据的增加、修改与删除操作方法,本课程通过案例为读者分析了这三类方法的使用,同时又分析了这三个不同的操作之间的设计关联。

0307_【掌握】MyBatis数据查询操作
MyBatis采用程序与SQL分离最重要的一点就是在于查询上的灵活使用,本课程为读者分析了SqlSession接口中提供的数据查询方法,并且通过实例讲解了常用的各类查询操作,并分析了分页查询时的Map参数传递操作。

0308_【掌握】ResultHandler
为了便于规范化的查询处理操作,MyBatis提供了一个ResultHandler结果集处理接口,本课程为读者讲解了该接口的作用,并且实现了List集合转Map集合的操作。

0309_【掌握】if语句
if语句可以在动态SQL中对传入数据进行有效的判断,而后再决定最终所使用的SQL命令,本课程通过数据的查询与更新操作处理,分析了if语句的使用形式。

0310_【掌握】choose语句
choose提供了多条件判断处理的支持,相比较if语句更加的简洁,本课程为读者分析了<choose>与<when>语句的使用,并结合两者实现了数据查询的处理。

0311_【掌握】set语句
数据更新操作中需要通过SET进行更新列与新内容的设置,在MyBatis内部提供了对应的set元素,本课程讲解了此语句的作用并结合了if与where实现了动态字段更新。

0312_【掌握】foreach语句
考虑到数据重复性的配置问题,MyBatis在动态SQL处理中提供了foreach循环操作,本课程为读者分析了该语句的组成结构,并通过具体案例实现了数据批量删除以及数据批量增加功能的开发。

0313_【理解】一级缓存
SqlSession代表了每一个不同的操作线程,MyBatis默认提供了一级缓存的处理支持,本课程为读者分析了一级缓存的使用,同时分析了一级缓存的控制方法。

0314_【理解】二级缓存
二级缓存是一种跨多个Session实现数据共享的处理机制,也是日常开发中最为常见的缓存模式,本课程通过实例为读者分析了二级缓存的作用,同时分析了在MyBatis中提供的各类二级缓存清除算法的区别。

0315_【理解】Redis分布式缓存
MyBatis内部支持有分布式缓存的实现,这样的设计可以有效的提升程序的处理性能,本课程为读者分析了分布式缓存的意义,并分析了自定义缓存存储的操作结构,最后通过Redis数据库实现了分布式的缓存数据存储。

0316_【理解】拦截器简介
拦截器是实现切面编程的重要实现方案,为了便于拦截器的实现管理,MyBatis提供了Interceptor拦截器处理接口,本课程通过实例为读者分析了该接口的使用,同时基于源代码分析了拦截器与JDK动态代理实现之间的关联。

0317_【理解】Executor执行拦截
在MyBatis中拦截器属于一种扩展插件,基于切面的配置实现控制,本课程将拦截器整合在了MyBatis中的查询与更新应用,并实现了属性的配置与获取操作。

0318_【理解】StatementHandler执行拦截
StatementHandler是整个MyBatis中执行数据库操作的核心接口,拦截器基于该接口实例可以获取要执行的SQL数据,本课程通过实例分析了该接口的使用,并且通过源码结构分析了RoutingStatementHandler类的作用。

0319_【理解】ResultMap
考虑到数据表结构设计的灵活性,MyBatis也提供了数据字段与类成员属性之间的映射配置,可以通过ResultMap进行定义,本课程通过实例分析了该结构的作用。

0320_【了解】调用存储过程
存储过程是数据库提供的一种常见对象结构,MyBatis作为数据层实现组件也提供了存储过程的调用支持,本课程为读者分析了存储过程的使用问题,并通过实例演示了MySQL下存储过程的创建,以及MyBatis中多个查询结果集数据的接收。

0321_【理解】鉴别器
在一张表中同时保存有多个不同的实体数据时,基于鉴别器可以将不同的数据映射到不同的类之中,达到逻辑上的结构划分,本课程为读者分析了鉴别器的实现机制,并且通过具体的操作实例实现了鉴别器的应用。

0322_【理解】类型转换器简介
数据层开发中,程序结构要与数据表结构有效统一,但是考虑到程序开发逻辑的配置灵活性,也可以在类型不匹配的环境下,通过类转换器实现数据类型的改变,本课程为读者分析了类型转换器的操作原理,并通过具体的实例讲解了类型转换器的使用。

0323_【理解】一对一数据关联
在项目设计中为了可以更加清晰的描述出实体的详情内容,往往会采用一对一的数据关联结构进行表设计,本课程通过银行账户的基本信息与详情信息的设计,为读者讲解了如何在MyBatis中实现一对一的结果集映射处理。

0324_【理解】一对多数据关联
为了便于业务数据的分类管理,在数据表设计时,会基于一对多的结构进行数据存储,本课程通过角色与权限的数据关联,讲解了MyBatis中对于查询结果的映射以及集合查询处理,并分析了延迟加载的作用与配置实现。

0325_【理解】多对多数据关联
多对多关联是一对多关联的扩充,也是项目中常见的模型结构,本课程通过具体的应用实例,为读者分析了MyBatis中多对多关联的映射配置以及类结构定义,并且分析了MyBatis与SpringDataJPA在多对多处理上的区别。

0326_【掌握】Spring整合MyBatis
为了实现统一的开发整合,MyBatis官方提供了Spring的整合依赖库,本课程讲解了框架整合的意义,并通过具体的配置步骤讲解了Spring与MyBatis整合的具体实现。

0327_【理解】使用注解配置SQL命令
现代的开发更多的是强调减少配置文件的使用,所以为了简化映射文件的出现,MyBatis提供了注解的配置方式,本课程为读者讲解了相关注解的作用,并对已有的代码进行修改,通过注解实现了数据层中SQL命令的配置。

0328_【理解】SQL语句构建器
数据层开发中最为繁琐的就是SQL命令的配置,虽然MyBatis提供了基于注解的配置方式,但是面对复杂SQL编写时,就可以基于SQL语句构建器来进行配置,本课程为读者分析了SQL类的方法作用以及与之相关配置注解的使用。

0329_【理解】MyBatis代码生成器
数据层的代码开发有着一定的代码相似性,所以为了简化数据层代码开发的重复度,在实际工作中可以基于MyBatis代码生成器实现映射文件、VO以及DAO代码生成,本课程通过实例为读者讲解了这一功能的具体实现。

0401_【理解】MyBatis-Plus简介
MyBatis提供了全面的数据层开发支持,但是由于其提供的数据支持有限,会导致大量重复的代码定义,所以为了简化MyBatis的开发,可以基于MyBatis-Plus进行增强,本课程为读者分析了MyBatis-Plus的作用以及组成结构。


0402_【掌握】MyBatis-Plus编程起步
在已有的Spring+MyBatis开发环境中,直接引入MyBatis-Plus组件即可实现数据层的简化定义,本课程在已有的项目基础上进行了改造,通过具体的应用实例为读者讲解了MyBatis-Plus项目的搭建与开发,并分析了项目所引用的核心依赖组成结构。

0403_【掌握】BaseMapper接口
BaseMapper接口是MyBatis-Plus进行数据层代码优化的核心接口,本课程通过数据更新的操作,为读者分析了MyBatis-Plus与动态代理之间的关联,同时为读者列出了BaseMapper接口中的全部方法,并基于这些方法实现了完整的数据CRUD操作。

0404_【掌握】Wrapper条件构造器
完整的数据处理中,除了会根据ID进行数据操作外,也会基于一些特定的条件进行处理,所以MyBatis-Plus提供了Wrapper条件构造器,本课程为读者讲解了条件构造器的类关联结构,并通过具体的案例演示了条件构造器的使用。

0405_【掌握】逻辑删除
逻辑删除是一种基于状态位更新的数据处理方式,在大型项目中使用较多,而为了简化SQL命令编写的重复性,MyBatis-Plus提供了逻辑删除的自动处理支持,本课程基于全局配置方式讲解了逻辑删除的定义,并分析了该操作对删除方法的影响。

0406_【掌握】数据填充
在项目业务处理中,为了便于一些固定数据的配置,往往需要在业务层中进行处理,为了简化这一操作,MyBatis-Plus提供了自动数据填充的支持,本课程通过具体的应用案例,为读者分析了MetaObjectHandler数据填充处理类的使用。

0407_【掌握】主键策略
为了更方便的适用于分布式系统的开发,MyBatis-Plus支持有主键生成策略的扩展,本课程通过标准的分布式集群设计方式为读者分析了主键生成存在的问题以及解决方案,并基于Twitter的雪花算法实现了自定义主键处理策略。

0408_【掌握】SQL注入器
当遇见BaseMapper操作方法不足时怎么办?那么就需要进行全局数据操作方法的扩充,为了更好的便于用户扩展,MyBatis-Plus提供了SQL命令生成类的支持,本课程为读者讲解了这一机制的实现结构,并通过具体的案例配置了自定义SQL生成器。

0409_【理解】MyBatis-Plus插件
考虑到各种无侵入的代码支持,MyBatis-Plus扩充了MyBatis中的拦截器机制,提供了专属的InnerInterceptor处理接口,本课程为读者分析了该接口的使用形式,并通过自定义插件的方式说明了该操作的配置方式以及核心实现结构。

0410_【掌握】分页插件
分页是项目中的基本功能,为了简化分页操作的处理过程,MyBatis-Plus提供了数据分页拦截器的支持,本课程为读者分析了该拦截器的作用与配置,并基于IPage接口实现了分页参数的配置以及分页查询结果的接收。

0411_【理解】乐观锁插件
乐观锁是一种高并发更新下的高性能同步处理机制,MyBatis-Plus中完善了此机制的实现,并基于插件的方式提供配置,本课程为读者分析了乐观锁的处理流程,并通过具体的代码操作实现了乐观锁插件的应用。

0412_【理解】防全表更新与删除插件
数据是现代应用性项目的核心元素,但是错误更新或删除有可能会造成整个应用的崩溃,为了应付此类情况,MyBatis-Plus提供了更新与删除的阻断插件,防止全表更新操作的出现,本课程为读者分析了该类操作的影响,并讲解了该插件的使用。

0413_【理解】动态表名插件
考虑到不同的项目团队有不同的表命名风格,同时也考虑到数据表的动态迁移问题,MyBatis-Plus提供了动态表名称的设置插件,该插件可以根据用户的需要自动修改表名称,本课程为读者讲解了该操作的意义,以及具体的应用实现。

0414_【理解】多租户插件
多租户是一种在SaaS系统中常见的功能,利用多租户的模式实现不同用户的数据管理,为配合云服务系统开发,MyBatis-Plus提供了多租户的实现支持,本课程为读者分析了多租户的实现模式,并根据TenantLineInnerInterceptor插件实现了数据维护。

0415_【理解】SQL性能规范插件
良好的SQL语句的编写是保障项目高性能运行的关键,为了保障开发人员编写出高性能的SQL语句,MyBatis-Plus提供了SQL性能规范插件,本课程为读者分析了常见的SQL性能问题,以及IllegalSQLInnerInterceptor插件的使用。

0416_【理解】数据安全保护
应用项目主要运行在公网之中,并且项目运行中的所有核心配置项也都要部署早应用服务上,这样就会产生一系列的安全问题,本课程为读者分析了数据库明文配置处理所存在的问题,并基于AES算法实现了配置项的加密和解密操作。

0417_【理解】ActiveRecord
AR模式可以基于实体类的结构实现数据层的开发处理,可以进一步简化数据层的开发模型,这样就可以更直观的描述出ORM的设计思想,本课程为读者分析了AR模式的作用,并通过实例讲解了AR模式下的数据操作

0418_【理解】通用枚举
枚举可以实现有限范围数据的定义,为了可以进一步明确实体类的结构,可以基于枚举类的方式进行字段的配置,本课程通过案例为读者分析了这一实现机制的使用。

0419_【理解】IService
项目中必然会存在有大量的基础CRUD业务功能,而为了进一步简化业务层的实现机制,MyBatis-Plus又提供了IService接口,并基于该接口实现了大量业务功能的定义,本课程为读者分析了该接口的作用以及组成,并通过具体代码实现了业务调用。

0420_【理解】MyBatis-Plus逆向工程
SSM项目开发中会包含有多种配置文件、接口以及实现类等元素,为了减少这些重复结构的开发,MyBatis-Plus提供了逆向工程支持,本课程为读者讲解了逆向工程的创建,并通过FastAutoGenerator实现了工程代码的创建。


0501_【理解】数据批处理简介
在大规模数据存储的应用环境下,批处理是提高服务处理性能的重要技术手段,而该类手段不仅仅出现在数据库中,也包含在数据的处理逻辑中,本课程为读者讲解了批处理的意义,并介绍了SpringBatch框架主要特点。

0502_【理解】SpringBatch数据存储结构
SpringBatch在进行批处理操作时,所有的核心元数据都保存在SQL数据库之中,所以在SpringBatch给出的官方代码中就提供了专属的数据库脚本,本课程为读者分析了这些表的作用,并基于MySQL数据库创建了SpringBatch开发所需的数据库。

0503_【掌握】SpringBatch编程起步
SpringBach在进行项目开发时,需要严格的按照其既定的开发标准进行项目的编写,所以本次将基于最基础的Job与Step结构为读者讲解一个“HelloWorld级”的入门项目定义,帮助读者理清SpringBatch的基本实现结构。

0504_【掌握】JobParameters
所有用户定义的作业都会被记录在数据表中,而为了区分不同的作业执行方式,在SpringBatch中可以基于JobParameters进行参数的配置,本课程为读者分析了该参数类的组成结构,并基于数据表中存储的数据项分析了该类的作用。

0505_【理解】JobExplorer
批处理的核心组成结构是作业,SpringBatch在进行数据记录时也是以作业作为核心单元进行记录的,为此在SpringBatch中提供了JobExplorer作业浏览器,本课程通过实例讲解了该接口的作用,并利用该接口获取了相关的作业信息。

0506_【掌握】Job参数验证
每一个批处理作业,都依据参数的不同而加以区分,为了保证所需参数的正确传递,SpringBatch提供了参数验证器的支持,本课程为读者讲解了参数验证器的实现格式,并通过内置的DefaultJobParametersValidator验证器进行了请求KEY的检查。

0507_【掌握】Job监听器
考虑到AOP的实现形式,在SpringBatch中也提供了作业的监听机制,本课程为读者讲解了JobExecutionListener接口的使用以及在作业中的配置,并利用JobExecution获取了作业执行前后的相关数据。

0508_【掌握】作业退出
作业的执行由JobLauncher类实例发出,而在执行前或者执行中,如果发现出现了某些错误,也可以基于JobOperator进行作业的退出,本课程通过源代码组成分析了该类的关联结构,并基于监听器的前置监听操作实现了作业中断处理。

0509_【掌握】Step多步骤配置
Step是Job的基本组成单元,而考虑到作业的处理逻辑,可以配置多个处理步骤,本课程通过实例讲解了多步骤的定义,并分析了RepeatStatus枚举类的作用。

0510_【掌握】Step监听器
每一步Step对象的执行,都可以为其配置监听操作,在步骤执行前后进行状态监听,本课程为读者分析了StepExecutionListener接口的使用,并使用注解配置的方式实现了Step监听器的配置与相关实体数据的获取。

0511_【掌握】Flow
为便于批处理业务的统一管理,SpringBatch提供了Flow管理结构,本课程为读者分析了Flow实例的配置结构,并基于Flow实现了作业处理步骤的定义。

0512_【掌握】JobExecutionDecider
作业执行时依靠的是里面的步骤,而步骤在执行时除了可以按照顺序的方式处理外,也可以基于分支的形式判断,SpringBatch提供了作业决策器的支持,本课程为读者分析了决策器的处理逻辑与关联类定义,并通过具体的代码实现了这一功能的定义。

0513_【掌握】异步作业
为了得到高效的作业处理效率,SpringBatch提供了异步作业的支持,本课程为读者分析了异步作业的处理模型,并基于TaskExecutor接口实现了异步线程池的配置。

0514_【掌握】Tasklet简介
Tasklet是构成批处理作业的核心单元,在实际的开发中所有数据的读、写以及处理等操作都应由不同的Tasklet实例负责,本课程为读者分析了内置Tasklet接口实现类的情况,并通过代码演示了相关类的使用。

0515_【掌握】批处理模型
批处理的核心意义在于数据的输入与输出操作,而后结合数据与业务逻辑就可以实现最终的批处理操作,本课程通过一个完整的银行对帐数据的操作,为读者分析了批处理开发中可能存在的问题以及操作流程,并为后续的讲解提供了设计依据。

0516_【掌握】LineMapper
批处理中首先需要解决的就是数据的拆分问题,为此提供了LineTokenizer接口标准,本课程讲解了该接口的作用,并使用该接口提供的默认子类实现了数据拆分处理。

0517_【掌握】FieldSetMapper
FieldSet可以保存拆分的数据项,但是考虑到面向对象程序设计的开发要求,数据应该基于对象的方式进行处理,所以提供了FiledSetMapper转换支持,本课程为读者分析了该接口的作用与配置,并基于该接口实现了数据行与对象实例之间的转换。

0518_【掌握】ItemReader
数据是批处理操作的核心流程,在项目开发中数据的来源很多,数据的结构定义模式很多,为了解决数据读取规范化问题提供了ItemReader接口标准,本课程为读者分析了常见的数据源以及ItemReader相关实现子类的作用。

0519_【掌握】ItemProcessor
批处理数据文件中往往会包含有很多的数据项,同时这些原始的数据项还有可能要进行相应的处理,所以提供了ItemProcessor服务接口,本课程分析了该接口的作用,并通过具体的实例,讲解了类型转换功能的配置。

0520_【掌握】ItemWriter
数据批处理结果的写入,需要通过ItemWriter进行标准化的配置定义,同时在框架内部也提供了各类常用的写入机制,本课程基于数据库实现了批处理结果的保存。

0521_【掌握】创建批处理作业
完整的批处理链条搭建完毕后,就需要进行作业的配置,同时还需要考虑到外部参数路径的定义,本课程定义了完整的批处理作业,分析了@StepScope注解的作用,并根据作业参数实现了动态资源的加载。

0522_【理解】操作监听
为了便于Spring对于数据处理步骤的监控,SpringBatch针对于数据读取、数据处理以及数据写入提供了监听接口,本课程为读者讲解了这些接口的操作,并通过实例代码分析了数据写入监听接口,以及与chunk()配置方法之间的关联。

0523_【掌握】Chunk简介
Chunk是一个批处理的核心概念,实现了一个批处理完整定义,本课程首先讲解了一个完整批处理的各个组成结构,并且基于CompletionPolicy实现了Chunk处理逻辑中的完成策略配置。

0524_【掌握】Chunk简介
Chunk实现了完整的数据读写处理,所以为了便于用户对Chunk操作的监控,提供了专属的ChunkListener,本课程讲解了该监听接口的使用,同时总结了SpringBatch中所有监听接口的层次关系。

0525_【掌握】Chunk事务处理
Chunk采用批处理的方式进行数据的写入操作,所以在每次Chunk执行时都会提供有完整的事务处理,本课程为读者分析了SpringBatch中的事务处理形式,并通过实例讲解了如何在Chunk中进行自定义事务Bean的操作实现。

0526_【掌握】异常跳过机制
为了解决批处理作业中可能产生的各类异常中断操作,SpringBatch提供了异常跳过的支持,本课程通过具体的案例为读者分析了异常跳过处理机制的使用特点,同时讲解了SkipListener接口的作用以及异常信息的记录。

0527_【掌握】错误重试机制
操作重试是保证批处理稳定性的重要支持,SpringBatch提供了重试机制以及间隔调度机制,本课程为读者分析了该操作的实现,并分析了其相关实现类的使用结构。

0528_【理解】SpringTask简介
定时调度是Java系统开发中的常见功能,本课程为读者分析了定时调度任务的意义,同时基于程序和源代码,分析了JDK中定时调度组件的设计问题。

0529_【掌握】SpringTask间隔调度
SpringTask直接与Spring框架紧密整合,不仅开发容易而且配置简单,本课程通过一个SpringTask间隔调度形式,为读者分析了该定时组件开发的基本结构。

0530_【掌握】CRON表达式
为了实现精准的定时任务调度,SpringTask支持了CRON表达式,本课程为读者分析了CRON表达式的语法结构,以及CORN表达式的常见范例。

0531_【掌握】SpringTask任务调度池
为了提高SpringTask并行任务处理性能,可以在项目中引入线程池的配置,本课程首先分析了多任务处理的问题,并利用SchedulingConfigurer接口实现了自定义线程池的配置管理,实现了多调度任务的并行执行的设计要求。

0601_【掌握】拦截器案例实现说明
请求和响应是MVC开发框架处理的核心主题,在控制层中所接收到的参数必须是合法有效数据,所以应该在请求前进行有效的数据验证拦截,本课程为读者分析了数据验证的意义,并总结了数据验证处理实现的基本结构。

0602_【掌握】搭建案例开发环境
拦截器的应用需要保证项目中提供有SpringMVC的相关依赖库,所以本次将基于IDEA与Gradle进行项目的搭建,并分析了项目中各个子模块的作用。

0603_【掌握】请求包装
当前的项目应用中会大量的使用REST处理架构,考虑到HttpServletRequest接口中的getInputStream()方法只能够使用一次,所以就需要对这一机制进行包装处理,本课程为读者分析了HTTP请求接收的问题,同时给出了数据流读取的解决方案。


0604_【掌握】定义基础数据验证规则
拦截器如果要想正确的实现数据拦截的处理,则一定要进行验证规则的配置处理,同时在验证规则配置时还需要考虑程序开发扩展性的需要,本课程通过面向对象设计的方式分析了验证规则结构的定义,同时给出了内置验证规则的使用标记。


0605_【掌握】获取验证规则
验证规则的处理需要与控制层的方法相匹配,这样就要定义专属的验证规则注解,本课程分析了验证规则注解定义的结构,同时基于拦截器的运行机制实现了验证注解以及验证规则的获取。

0606_【掌握】数据验证处理
验证规则的背后是验证的处理逻辑,验证规则由IValidateRule接口定义,本课程将通过合理的类结构设计,对所获取到的验证规则进行解析,而后通过反射机制实现了数据验证的处理,以及错误信息的存储。

0607_【掌握】错误展示
数据验证失败之后,程序需要进行错误信息展示处理,本课程创建了一个错误信息响应的处理类,并实现了REST与Dispatcher两种不同样式的错误处理,考虑到实际应用的场景开发需求,本次将实现一个完整的WEB请求操作实例。

0608_【掌握】上传文件验证
除了基本的参数传递之外,在开发中也需要实现文件的上传处理,而考虑到业务的完善性,就需要对上传文件的类型进行定义,本课程为读者分析了文件上传验证的实现流程,同时通过实例了SpringMVC文件上传中可能存在的各类技术问题与解决方案。

0701_【掌握】SSJ案例实现说明
SSJ主要是结合关系型数据库实现应用开发,利用JPA简化JDBC开发的繁琐操作,再利用SpringDataJPA简化数据层的方法定义,而后再通过MVC框架实现所需数据的展示处理,本课程通过基础CRUD技术实现历史对案例功能进行了完整说明。

0702_【掌握】搭建SSJ开发环境
本次课程将通过具体的操作步骤,在已有的项目中实现新建子模块的需要,并且会根据SSJ框架整合的需要添加所需要的依赖库,并根据本系列相关相关图书中所讲解过的内容进行SpringDataJPA、SpringCache以及SpringMVC有关的配置类定义。

0703_【掌握】分类数据列表业务
在图书信息增加或修改时,都需要进行有效的分页列表数据加载,所以本课程首先完成分页列表的显式处理,考虑到数据加载的性能,在完成JPA查询操作的基础上,将基于SpringCache实现数据缓存配置。

0704_【掌握】强制刷新缓存
在实际项目应用过程中,有可能会随着不同的业务要求变化,而进行分类数据的增加,此时除了要完成数据库中的数据更新操作之外,还需要考虑到缓存数据的更新处理,本课程通过实例展示了缓存强制性刷新操作的实现,并分析了缓存穿透问题的产生。

0705_【掌握】分类数据增加业务
为了便于读者更好的理解缓存强制性刷新的意义,本课程实现了分类数据的添加处理逻辑,同时考虑到数据验证的需要,又同时引入了拦截器实现请求数据验证控制。

0706_【掌握】图书数据分页列表
图书表的管理是本次案例的核心重点,在进行图书信息查询时,考虑到图书数据过多的问题,所以需要进行有效的分页控制,本课程讲解了图书数据分页加载的处理流程,并通过具体的后台代码开发,实现了数据分页列表与数据检索功能的实现。

0707_【掌握】增加图书数据
图书数据可以由使用者自行维护,在图书数据处理时需要考虑到文件上传的处理操作,本课程通过实例讲解了图书增加处理操作中的业务层与控制层的实现。

0708_【掌握】显示图书详情
在图书列表页面中为了便于使用者查看图书详情,提供了前端模态窗口的功能,基于Ajax查询处理并通过DOM实现数据的填充,本课程详细讲解了这一操作机制的处理流程,并通过具体的代码实现了数据详情的加载显示处理。

0709_【掌握】修改图书数据
已添加的图书信息可以根据用户需要进行动态修改,在修改时需要考虑到数据回填处理以及图片覆盖操作,本课程通过实例讲解了图书修改操作功能的实现。

0710_【掌握】删除图书数据
为了简化应用开发的难度,本次的程序采用了物理删除的方式实现了图书数据的删除操作,考虑到数据有效性的问题,在删除时也应该进行相关图片的清理,本课程通过实例讲解了图书删除业务的实现逻辑。

0801_【理解】前后端分离技术架构
前后端分离开发架构,是当今应用项目开发的主流实现方案,本课程通过已有的案例为读者分析了传统单WEB实例应用开发所带来的问题,同时讲解了前后端分离架构之中的数据传输、数据展示等相关技术的使用,

0802_【理解】搭建案例开发环境
由于前端项目的开发需要牵扯大量的设计精力,所以本次的案例将为读者提供完整的前端页面代码,同时按照WebPack标准进行代码存放,本课程将为读者讲解Node.JS的安装与配置,以及前端项目的配置与服务启动,同时对SSJ案例进行修改,使其以REST的形式提供数据服务。

0803_【掌握】后端业务改造
本次的开发基于SSM核心处理架构,所以需要通过MyBatis修改数据层的实现,那么也就需要同步修改业务层中的方法调用,本课程通过具体的开发实例,为读者讲解了后端业务逻辑的修改过程,也进一步总结了JPA与MyBatis的实现区别。

0804_【掌握】HTTPie测试命令
在前后端分离架构中,经常需要进行接口的测试,除了使用传统的CURL命令之外,本书也推荐使用HTTPie客户端工具,本课程为读者讲解了该命令行工具的安装,并且通过具体的实例分析了其基本使用。

0805_【掌握】图书分类列表
分类列表是图书信息发布的核心流程,本课程对已有的程序结构进行了修改,基于REST风格实现了数据的返回,并在前端项目中利用Axios实现了服务调用,并利用了MVVM框架的特点自动实现了ElementUI中元素的显示处理。

0806_【掌握】增加图书分类
新增图书分类的内容需要通过前端页面编写,在进行图书分类信息增加时,需要以JSON的形式进行请求的发送,所以后端应用要基于@RequestBody注解实现数据接收转换,本课程通过实例实现了这一功能的具体开发。

0807_【掌握】强制刷新分类数据缓存
前后端分离设计中的数据信息全部由后端加载,而后端为了保证处理性能,就会通过缓存保存数据,所以应该在前端提供有刷新的支持,本课程对已有的缓存刷新操作进行了更新处理,并实现了前端数据刷新显示处理。

0808_【掌握】图书分页列表显示
应用设计中考虑到图书的内容较多,所以需要进行数据的分页展示处理,本课程修改了后端的业务逻辑,使其更加适合于前后端分离的设计架构,并在前端提供了数据分页加载的处理。

0809_【掌握】增加图书数据
图书数据的增加处理需要在项目中提供完善的上传机制以及数据存储机制,本课程对后端控制层接口进行了定义,并基于ElementUI提供的组件实现了文件上传处理。

0810_【掌握】编辑图书数据
图书信息的编辑属于基础功能,并且在进行图书数据修改时,除了要将数据回显之外,还需要考虑到上传封面的显示以及替换的等处理问题,在本课程中通过实例分析了前后端分离架构中数据的回显处理,以及图书内容的更新操作实现。

0811_【掌握】删除图书数据
数据删除是维护的核心逻辑,本次依然采用物理删除的方式进行图书数据的维护,在本课程中将进行后台删除接口的定义,并通过ID实现图书数据以及对应封面的删除。
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yootk

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值