![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
案例上手 Spring 全家桶
重点讲解 Spring 全家桶最核心的 3 个模块 Spring Framework、Spring Boot、Spring Cloud,以及其他核心框架和数据库。让读者快速掌握 Spring 全家桶各个组件的使用,即使是没有接触过 Spring 框架的初学者也完全可以上手。
优惠券已抵扣
余额抵扣
还需支付
¥49.00
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
Java大联盟
资深Java开发工程师,热爱技术交流与分享,教程内容深入浅出,通俗易懂,覆盖Java全栈开发。
展开
-
开篇词:Spring 框架——Java 开发行业的标准
我是谁大家好,我叫宁楠,一名撸了多年代码的资深码农,拥有多年软件研发、系统架构经验,历任高级开发工程师 、技术总监。从上大学到现在接触 Java 已有十个年头了,无论是上学期间还是工作之后,身边朋友对我的评价基本是「学习能力强、上手新技术速度快」,这并不是因为我有多聪明,而是需要掌握正确的学习方法。什么是正确的学习方法?在我看来这个问题要因人而异,我认为好的方法可能并不适用于所有人,每个人都应...原创 2020-10-28 16:06:20 · 1433 阅读 · 0 评论 -
第 1-1 课:Spring 的基本应用——IoC 和 AOP
前言对于任何一个 Java 开发人员,Spring 的大名一定如雷贯耳,在行业中可谓是无人不知、无人不晓,说它是 Java 领域第一框架毫不为过。(图片来自 Spring 官网)Spring 概念诞生于 2002 年,创始人 Rod Jahnson 在其著作《Expert One-on-One J2EE Design and Development》中第一次提出了 Spring 的核心思想...原创 2020-10-28 16:06:21 · 279 阅读 · 0 评论 -
第 1-2 课:掌握 Spring IoC 两种常规操作,提高工作效率
前言上一讲介绍了 Spring 的 IoC,即控制反转,程序中由 Spring 来管理对象,当需要使用某个对象时,直接通过 IoC 容器来获取对象,并通过 DI 来完成对象之间的注入关系。下面继续来学习 IoC 的相关知识。Spring 中的 beanbean 是根据 scope 来生成的,表示 bean 的作用域,scope 有 4 种类型:singleton,单例,表示通过 Spri...原创 2020-10-28 16:06:21 · 130 阅读 · 0 评论 -
第 1-3 课:Spring IoC 工厂方法 + 自动装载
前言这一讲我们继续来学习 IoC 的两个常用知识点:IoC 通过工厂方法创建对象、IoC 自动装载(autowire)。IoC 通过工厂方法创建对象之前说过 IoC 是典型的工厂模式,下面我们就来学习如何使用工厂模式来创建 bean,IoC 通过工厂模式创建 bean 有两种方式:静态工厂方法实例工厂方法按照惯例,我们还是通过代码来带大家去学习工厂方法,先来学习静态工厂方法。(1...原创 2020-10-28 16:06:22 · 454 阅读 · 0 评论 -
第 1-4 课:Spring IoC 基于注解的开发
前言前面内容对 Spring IoC 的基本使用做了详细的讲解,这一讲来学习 IoC 在实际开发中的应用,通过 IoC 容器可以更好地构建程序的分层结构,基本原理是 IoC 提供了各个组件的实例化对象,然后根据具体需求从 IoC 中取出相应组件完成依赖注入,就类似于搭积木,IoC 把零件提供好了,我们只需要进行组装即可。实现方式有两种:基于 XML 配置文件和基于注解。具体思路如下:把程序分...原创 2020-10-28 16:06:22 · 259 阅读 · 0 评论 -
第 1-5 课:Spring IoC 底层实现
前言前面的课程主要学习了 Spring 框架 IoC 容器的相关理论和具体使用,Spring 作为一款非常优秀的框架,其编程思想和规范是非常值得我们去学习的。在自己现有的程度上,多去阅读优秀的源码,学习优秀的编程思想,对于开发者来讲,提升是非常大的。而学习源码最有效的方式就是仿照源码自己动手写一个类似的框架,学习是要以输出为目标的,如果只是为了读源码而读源码,很可能读完之后脑子还是一片空白,根...原创 2020-10-28 16:06:23 · 151 阅读 · 0 评论 -
第 1-6 课:Spring 的另一个核心机制 AOP
前言前面的内容集中对 Spring IoC 进行了详细讲解,之前说过,Spring 的两大核心机制是 IoC 和 AOP,本讲我们就一起来学习 AOP 的相关知识。AOP(Aspect Oriented Programming)意为面向切面编程,我们所熟悉的是面向对象编程(OOP),将程序中所有参与模块都抽象成对象,然后通过对象之间的相互调用关系来完成需求。AOP 是对 OOP 的一个补充,...原创 2020-10-28 16:06:23 · 132 阅读 · 0 评论 -
第 2-1 课:快速搭建第一个 Spring MVC 项目
Spring MVC 是什么Spring MVC 是 Spring Framework 用来提供的 Web 组件,全称是 Spring Web MVC,我们习惯将其称之为 Spring MVC。它是目前主流的实现 MVC 设计模式的框架,提供了前端路由映射、视图解析等功能,让 Web 开发变得更加简单,Spring MVC 是以 Spring IoC 容器为基础的,大大简化了它的配置,并且因为是...原创 2020-10-28 16:06:24 · 140 阅读 · 0 评论 -
第 2-2 课:深入探究底层原理,应用更加得心应手
前言上一讲我们学习了 Spring MVC 框架的使用,为了更好地理解这个框架,本讲来仿写一个 Spring MVC 框架,用到的技术比较简单,只需要 XML 解析 + 反射就可以完成,不需要 JDK 动态代理。自己手写框架的前提是必须理解框架的底层原理和运行机制,因此我们还是先来回顾一下 Spring MVC 的实现原理。Spring MVC 实现原理Spring MVC 的核心组件和工...原创 2020-10-28 16:06:25 · 161 阅读 · 0 评论 -
第 2-3 课:一文学会 Spring MVC 的常用注解
前言Spring MVC 框架为开发者提供了功能强大的注解机制,可以帮助我们简化代码的开发,提高开发效率,同时使得程序具备更好的扩展性,这一讲就来详细讲解 Spring MVC 框架中常用注解的具体使用。@RequestMappingSpring MVC 通过 @RequestMapping 注解将 URL 请求与业务方法进行映射,在控制器的类定义处以及方法定义处都可添加 @RequestM...原创 2020-10-28 16:06:25 · 150 阅读 · 0 评论 -
第 2-4 课:搞懂 Spring MVC 数据绑定,让开发更加简单
前言这一讲来学习 Spring MVC 的数据绑定,什么是数据绑定?在后台业务方法中,直接获取前端 HTTP 请求中的参数。首先来了解一下底层原理,HTTP 请求传输的参数都是 String 类型,但是 Hanlder 业务方法中的参数都是我们指定的数据类型,如 int、Object 等,因此需要处理参数的类型转换。此项工作不需要我们开发人员去完成,Spring MVC 的 HandlerAd...原创 2020-10-28 16:06:26 · 142 阅读 · 0 评论 -
第 2-5 课:探寻 Spring MVC 视图层的实现机制
前言Spring MVC 框架作为一个实现 MVC 设计模式的框架,很重要的一项工作是在控制器获取业务数据并返回给客户端,即在 JSP 页面展示业务数据,使用的技术是通过 EL 表达式从域对象中取值。在 Servlet 中,我们可以直接调用 Web 资源给域对象传值,在 Spring MVC 框架中,如何完成这个操作?这一讲我们就来学习 Spring MVC 框架的业务数据绑定。首先来理解这...原创 2020-10-28 16:06:26 · 224 阅读 · 0 评论 -
第 2-6 课:如何给项目定制数据类型转换器
前言前面的课程我们介绍过,使用 Spring MVC 框架进行 Web 开发时,前端页面传输的数据会自动封装到业务方法的参数中,这项工作是由 HandlerAdapter 组件完成的。我们知道 HTTP 表单中的所有请求参数都是 String 类型的,如果业务方法的参数是 String 或者 int 类型,HandlerAdapter 可以自动完成数据转换,但如果参数是其他数据类型,比如 Da...原创 2020-10-28 16:06:27 · 128 阅读 · 0 评论 -
第 2-7 课:Spring MVC 与主流架构 RESTful 的集成
前言这一讲来学习 Spring MVC 对于 RESTful 架构的支持,首先简单了解什么是 RESTful。RESTful 是当前比较流行的一种互联网软件架构模型,通过统一的规范完成不同终端的数据访问和交互,REST 全称为 Representational State Transfer,翻译成中文的意思是资源表现层状态转化。RESTful 简介RESTful 的优点是结构清晰、有统一的...原创 2020-10-28 16:06:27 · 142 阅读 · 0 评论 -
第 2-8 课:用 Spring MVC 的上传下载机制简化代码
前言在 Web 项目中,文件上传功能几乎是必不可少的,实现的技术有很多,这节课我们来学习如何使用 Spring MVC 框架完成文件的上传以及下载。首先我们来学习文件上传,这里介绍两种上传方式:单文件上传和多文件批量上传。单文件上传(1)底层使用的是 Apache fileupload 组件完成上传功能,Spring MVC 只是对其进行了封装,让开发者使用起来更加方便,因此首先需要在 p...原创 2020-10-28 16:06:28 · 141 阅读 · 0 评论 -
第 2-9 课:数据安全重中之重,Spring MVC 如何处理
前言数据校验是每个项目中必不可少的模块,Spring MVC 作为一款成熟的框架,也为我们提供了校验组件,有两种方式可供开发者选择:(1)基于 Validator 接口进行校验;(2)使用 Annotaion JSR-303 标准进行校验。使用 Validator 接口进行数据校验会稍微复杂一些,具体的数据验证规则需要开发者手动进行设置。而使用 Annotaion JSR-303 标准就相对简...原创 2020-10-28 16:06:28 · 163 阅读 · 0 评论 -
第 2-10 课:Spring MVC 表单标签库
前言在正式开始学习本讲内容之前,先来思考一个问题,为什么要使用 Spring MVC 表单标签库?答案很简单,使用它是为了简化代码的开发,提高我们的开发效率,其实我们使用任何一款框架或者工具都是出于这个目的,为了实现快捷开发。Spring MVC 表单标签库是如何来提高我们的开发效率呢?首先来做一个对比,业务场景:控制层返回业务数据到视图层,视图层需要使用 EL 将业务数据绑定到 JSP 页面...原创 2020-10-28 16:06:29 · 180 阅读 · 0 评论 -
第 2-11 课:Spring MVC 国际化
前言本节课我们来学习 Spring MVC 提供的国际化功能,所谓国际化就是指同一个应用程序在不同语言设置的浏览器中,自动显示不同的语言,比如在中文环境下,页面所有的文本全部以中文的形式展示,在英文语言环境下,同样的文字内容全部转换为英文,Spring MVC 框架对国际化操作做了很好的集成,只需简单配置即可完成国际化。具体步骤如下所示:(1)搭建 Spring MVC 环境。(2)配置 ...原创 2020-10-28 16:06:29 · 90 阅读 · 0 评论 -
第 2-12 课:Java Web 开发的基本操作之 EL 表达式
前言本讲我们一起来学习 Expression Language(EL) 表达式的使用,在 Java Web 开发中,如果使用 JSP 作为视图层技术,那么 EL 表达式就是必须要用到的技术,是每一个 Java 开发者都必须掌握的技能。什么是 EL 表达式Expression Language,表达式语言。使用 EL 表达式可以替代 JSP 页面中获取业务数据的复杂代码,让开发变得更加简单, ...原创 2020-10-28 16:06:30 · 133 阅读 · 0 评论 -
第 2-13 课:EL 表达式的好搭档—JSTL
前言上一讲介绍了 EL 表达式的使用,可以简化 JSP 页面的代码开发,但实际上 EL 表达式也有自己的缺陷,只能做展示,不能编写动态功能,比如集合的遍历,为了解决这一问题,JSP 提供了 JSTL 组件供开发者使用,因此通常情况下 JSP 页面的开发为 EL + JSTL,这一讲我们就来详细学习 JSTL 的使用。什么是 JSTLJSP Standard Tag Library,简称 JS...原创 2020-10-28 16:06:30 · 96 阅读 · 0 评论 -
第 3-1 课:搭建第一个 MyBatis 项目
从本节课开始,我们进入 MyBatis 框架的学习阶段。什么是 MyBatisMyBatis 是当前主流的 ORM 框架,是由 Apache 提供的一个开源项目,之前的名字叫做 iBatis,2010 年迁移到了 Google Code,并且将名字改为我们现在所熟知的 MyBatis,又于 2013 年 11 月迁移到了 Github。MyBatis 是一个帮助开发者实现数据持久化工作的框架,...原创 2020-10-28 16:06:30 · 139 阅读 · 0 评论 -
第 3-2 课:MyBatis 底层实现
前言上一讲我们学习了如何使用 MyBatis 框架,这一讲一起来探究 MyBatis 框架的底层原理,仿照 MyBatis,自己写一个操作数据库的小工具,自己写框架的主要目的在于学习 MyBatis 底层源码的设计思想,提高自己对框架的认知,进一步理解框架,进而更好地应用框架进行实际开发。由于篇幅有限,本讲我带领大家来完成一个 Demo 实现 MyBatis 的主要功能,MyBatis 作为一...原创 2020-10-28 16:06:31 · 155 阅读 · 0 评论 -
第 3-3 课:Mapper.xml 的常用配置
前言上一讲学习了 MyBatis 框架的基本原理和基本使用,这一讲继续深入 MyBatis 框架的学习,通过上一讲的学习我们知道 MyBatis 主要有两类配置文件:全局配置文件和 Mapper 配置文件,并且这两类配置文件的名字都可以自定义。全局配置文件主要用来定义数据源信息和一些基本配置,如事务管理、打印 SQL 语句、开启二级缓存、设置延迟加载等。Mapper 配置文件的功能就比较单一,...原创 2020-10-28 16:06:31 · 573 阅读 · 0 评论 -
第 3-4 课:MyBatis 逆向工程,简化代码开发
前言通过前面课程的学习,我们了解到 MyBatis 是一个“半自动”的 ORM 框架,SQL 语句需要开发者自定义,这样做的好处是代码更加灵活,SQL 语句需要我们单独在 Mapper.xml 中定义,与 Mapper 接口相对应,使用 MyBatis 进行开发的基本配置是:实体类Mapper 接口Mapper.xml如下图所示。这种方式的缺陷是如果参与业务的表太多,每张表的业务...原创 2020-10-28 16:06:32 · 110 阅读 · 0 评论 -
第 3-5 课:MyBatis 延迟加载
前言MyBatis 框架支持数据的级联查询,当然它不会自动完成,需要开发者手动在 Mapper.xml 中进行映射配置,比如我们拿客户(Customer)和订单(Order)举例,每一个订单都有对应的客户,在程序中的体现是查询到一个 Order 对象之后,可以直接访问到对应的 Customer 对象,比如根据 ID 查询订单,输出其客户姓名,代码如下所示。public class Test {...原创 2020-10-28 16:06:33 · 79 阅读 · 0 评论 -
第 3-6 课:MyBatis 缓存
前言上节课我们学习了 MyBatis 延迟加载,可以有效减少 Java 程序与数据库的交互次数,从而提高程序的运行效率,但是延迟加载的功能并不全面,它只能在做级联查询的时候提高效率,如果现在的需求就是单表查询,那么延迟加载就无法满足需求了。不用担心,MyBatis 同样为我们提供了这种业务场景下的解决方案,即缓存。使用缓存的作用也是减少 Java 应用程序与数据库的交互次数,从而提升程序的运行...原创 2020-10-28 16:06:33 · 77 阅读 · 0 评论 -
第 3-7 课:MyBatis 动态 SQL
前言MyBatis 作为一个“半自动化”的 ORM 框架,需要开发者手动定义 SQL。在业务需求比较复杂的情况下,手动拼接 SQL 的工作量就会非常大,为了适用不同的情况,往往需要做很多重复性的工作,这种步骤繁琐的工作对于开发者来讲是很痛苦的,同时也容易出错。比如我们定义一个方法,通过某些属性来查找 User 对象,User 定义如下所示。public class User{ pri...原创 2020-10-28 16:06:34 · 105 阅读 · 0 评论 -
第 3-8 课:搭建 Java 常规技术之 SSM 整合
前言在前面的课程中,我们已经分别学习了 Spring、Spring MVC、MyBatis 框架的使用,在实际开发中我们通常会将这 3 个框架整合起来使用,就是所谓的 SSM 框架,是目前企业中比较常用的一种开发方式,首先来回顾一下这 3 个框架的基本概念。SpringSpring 是 2003 年兴起的一个轻量级的企业级开发框架,可以替代传统 Java 应用的 EJB 开发方式,解决企业应...原创 2020-10-28 16:06:35 · 193 阅读 · 0 评论 -
第 3-9 课:Nginx 搭建 Tomcat 集群
前言本节课我们来学习 Tomcat 集群的集体实现方式。什么是 Tomcat 集群?集群的意思是在多个服务器上部署同一个 Java Application,并结合负载均衡来为客户端自动选择一个服务终端,这样就可以减轻服务端的压力,相当于之前是一个 Tomcat 来提供服务,现在同时搞 10 个 Tomcat,那平摊到每一个 Tomcat 的压力就小了很多。这里我们使用 Nginx 技术来实现...原创 2020-10-28 16:06:36 · 88 阅读 · 0 评论 -
第 4-1 课:搭建主流 NoSQL MongoDB 环境
前言本节课我们进入 NoSQL 的学习,当前主流的 NoSQL 产品是 MongoDB 和 Redis,对于习惯使用关系型数据库的开发者来说,MongoDB 比 Redis 更好上手,因为 MongoDB 是所有 NoSQL 中最像关系型数据库的。MongoDB 基于分布式文件存储,功能非常强大,与关系型数据库的最大区别在于它的数据表结构非常灵活,是 BSON 格式的。BSON 是什么?它是一...原创 2020-10-28 16:06:36 · 123 阅读 · 0 评论 -
第 4-2 课:MongoDB 常用命令
前言上节课我们已经成功搭建起来 MongoDB 服务器,本节课我们来介绍 MongoDB 数据库的常用命令。MongoDB 的命令比传统 SQL 更加简便,使用起来更加方便,它的操作更贴近面向对象思想,这是因为 MongoDB 的存储结构是 BSON 格式,类似于 JSON 的一种数据格式,所以 MongoDB 操作起来非常灵活,不会像传统的关系型数据库那样有很多限制。我们要介绍的常用命令大...原创 2020-10-28 16:06:37 · 136 阅读 · 0 评论 -
第 4-3 课:Spring Data 集成 MongoDB:MongoTemplate
前言前面的课程中我们学习了如何搭建 MongoDB 数据库以及基本操作,实际开发中我们需要结合框架来完成对数据库的访问和管理,所以本节课我们就来学习管理 MongoDB 的企业级框架。Spring Data MongoDB 是 Spring Framework 家族中的一员,是 Spring Data 专门针对 MongoDB 设计的子模块,使用它可以非常方便的管理 MongoDB,甚至无需开...原创 2020-10-28 16:06:37 · 329 阅读 · 0 评论 -
第 4-4 课:Spring Data 集成 MongoDB:Repository
前言前面的课程我们已经详细讲解了 MongoDB 数据库的安装及使用,实际开发中,我们可以通过 Spring Data 来简化对 MongoDB 数据库的管理。Spring Data 是 Spring 提供的持久层产品,主要功能是为应用程序中的数据访问提供统一的开发模型,同时保留不同数据存储的特殊性,并且这套开发模式是基于 Spring 的。根据不同类型的数据存储类型又可分为 Spring D...原创 2020-10-28 16:06:38 · 318 阅读 · 0 评论 -
第 4-5 课:Spring MVC + Layui + Spring Data + MongoDB 项目实战
前言这节课我们用本阶段所学知识实现一个权限管理系统,帮助大家掌握所学技术在实际开发中的使用。需求简介:权限管理:查询、创建、修改、删除角色管理:查询、创建、修改、删除、添加权限用户管理:查询、创建、修改、删除、添加角色用户登录:登录成功根据该用户角色动态生成权限菜单开发环境:JDK 10.0.1Maven 3.5.3tomcat 9.0.8Eclipse Photon...原创 2020-10-28 16:06:38 · 226 阅读 · 0 评论 -
第 5-1 课:快速搭建第一个 Spring Boot 项目
前言从本节课开始,我们进入 Spring Boot 框架的学习。Spring Boot 是当前 Java 领域主流的技术栈,同时也是整个 Spring 全家桶中非常重要的一个模块。Spring Boot 简介Spring 作为一个软件设计层面的框架,在 Java 企业级开发中应用非常广泛,但是 Spring 框架的配置非常繁琐,且大多是重复性的工作,Spring Boot 的诞生就解决了这一...原创 2020-10-28 16:06:39 · 136 阅读 · 0 评论 -
第 5-2 课:Spring Boot 配置文件
前言上节课我们成功地启动了一个基于 Spring Boot 的 Web 应用,在业务代码编写和使用上与 Spring MVC 几乎一致,但是在配置上省了很多事,比如,不需要在 web.xml 中配置 Spring MVC 的 DispatcherServlet,不需要配置 springmvc.xml 中的自动扫包,视图解析器等,甚至连这个 springmvc.xml 文件都不需要了。同时也不需...原创 2020-10-28 16:06:40 · 115 阅读 · 0 评论 -
第 5-3 课:Spring Boot 整合 JSP
前言在前面的课程中我们已经用 Spring Boot 快速构建了一个 Web 应用,可以向客户端返回数据,如果是在非前后端分离的传统 Web 项目中,只返回数据是不够的,同时还需要返回视图信息。接下来我们就来一起学习 Spring Boot 与视图层的整合,主要介绍两种视图层技术:JSP 和 Thymeleaf。JSP 是传统 Java Web 开发中的技术层组件,Thymeleaf 是当前比...原创 2020-10-28 16:06:40 · 98 阅读 · 0 评论 -
第 5-4 课:Spring Boot 整合 Thymeleaf(上)
前言上节课我们学习了 Spring Boot 整合 JSP 的具体操作,实现了 Spring Boot 与视图层的交互,相比较于 JSP,Thymeleaf 是目前较为流行的视图层技术,Spring Boot 官方也不推荐使用 JSP,而是建议使用 Thymeleaf,这节课我们就一起来学习 Spring Boot 整合 Thymeleaf 的具体实现方式。什么是 ThymeleafThym...原创 2020-10-28 16:06:41 · 139 阅读 · 0 评论 -
第 5-5 课:Spring Boot 整合 Thymeleaf(下)
前言上节课我们讲解了 Spring Boot 与 Thymeleaf 的整合,以及常用标签的使用,本节课我们继续学习 Thymeleaf 模版标签的使用。th:valueth:value 用作给标签赋值,具体使用如下所示。Handler@GetMapping("/value")public ModelAndView value(){ ModelAndView modelAndV...原创 2020-10-28 16:06:41 · 110 阅读 · 0 评论 -
第 5-6 课:Spring Boot 整合 JdbcTemplate
前言前面的课程我们已经学会了如何使用 Spring Boot 整合视图层技术,我推荐大家使用 Thymeleaf,因为它是目前的趋势,但是仅有视图层技术是远远不够的,我们知道一个完整的 Web 应用由三大部分组成,分别是客户端、Web 服务、数据库,如下图所示。Spring Boot + JSP 或者 Spring Boot + Thymeleaf 只是完成了这个架构的前半部分,即客户端和 ...原创 2020-10-28 16:06:42 · 125 阅读 · 0 评论