SpringBoot
文档更新日志
版本 | 更新日期 | 操作 | 描述 |
---|---|---|---|
v1.0 | 2021/11/14 | A | 基础篇 |
前言
很荣幸有机会能以这样的形式和互联网上的各位小伙伴一起学习交流技术课程,这次给大家带来的是Spring家族中比较重要的一门技术课程——SpringBoot。一句话介绍这个技术,应该怎么说呢?现在如果开发Spring程序不用SpringBoot那就是给自己过不去,SpringBoot为我们开发Spring程序提供了太多的帮助了,因此借这个机会给大家分享这门课程,希望各位小伙伴学有所得,学有所用,学有所成。
正如上面提到的,这门技术是用来加速开发Spring程序的,因此学习这门技术是有一定的门槛的。你可以理解为你现在是一门传统的手工艺人,现在工艺升级,可以加速你的生产制作过程,但是前提是你要会原始工艺,然后才能学习新的工艺。嗯,怎么说呢?有一定的门槛,至少Spring怎么回事,与Spring配合在一起工作的一堆技术又是怎么回事,这些搞明白才能来看这个技术,不然就只能学个皮毛,或者学着学着就开始因为其他技术不太过关,然后就学不下去了,然后,就没有然后了,果断弃坑了。不管怎么说,既来之则安之,加油学习吧,投资自己肯定是没毛病的。
课程内容说明
SpringBoot这门技术课程所包含的技术点其实并不是很多,但是围绕着SpringBoot的周边知识,也就是SpringBoot整合其他技术,这样的知识量很大,例如SpringBoot整合MyBatis等等。因此为了能够将本课程制作的能够适应于各个层面的学习者进行学习,本套课程会针对小白,初学者,开发者三种不同的人群来设计全套课程。具体这三种人群如何划分,就按照我的描述形式来分吧,各位小伙伴可以对号入座,每种人群看课程的起始位置略有差别。
学习者 | 归类方式 |
---|---|
小白 | 完全没有用过SpringBoot技术 |
初学者 | 能使用SpringBoot技术完成基础的SSM整合 |
开发者 | 能使用SpringBoot技术实现常见的技术整合工作 |
简单说就是你能用SpringBoot做多少东西,一点不会就是小白,会一点就是初学者,大部分都会就是开发者。其实这个划分也不用太纠结,这个划分仅仅是为了帮助你对本技术课程所包含的阶段模块划分做一个清晰认知,因为本课程中会将SpringBoot技术划分成4个单元,每个单元是针对不同的学习者准备的。
学习者 | 课程单元 |
---|---|
小白 | 基础篇 |
初学者 | 应用篇( 运维实用篇 & 开发实用篇 ) |
开发者 | 原理篇 |
看完这个划分你就应该有这么个概念,我没有用过SpringBoot技术,所以从基础篇开始学习;或者我会一点SpringBoot技术,那我从实用篇开始学就好了。就是这个意思。
每个课程单元内容设置不同,目标也不一样,作为学习者如果想达成最佳的学习效果,最好明确自己的学习目标再进行学习,这样目标明确,学习的时候能够更轻松,你就不会在学习的时候纠结如下的问题了。比如学着基础篇在那想,这个东西是个什么原理啊?这个东西是这么用的,那个东西该怎么用啊?因为原理性的内容统一放置到了原理篇讲解了,应用相关的内容统一放到应用篇里面讲解,你在基础篇阶段纠结也没有用,这一部分不讲这些知识,在基础篇先把SpringBoot的基础使用掌握完再说后面的知识吧。
此外还有一点需要说明的是,目前SpringBoot技术发展速度很快,更新速度也很快,因此后续还会对本套课程进行持续更新,特此在三个课程单元的基础上追加一个番外篇。番外篇的设置为了解决如下问题:
- 持续更新SpringBoot后续发展出现的新技术
- 讲解部分知识点规模较大的支线知识(例如WebFlux)
- 扩展非实用性知识,扩展学习者视野
每一个课程单元的学习目标如下,请各位查收,在学习的过程中可以阶段性的给自己提个问题,下面列出来的这些学习目标你是否达成了,可以检验你的学习成果。
课程单元 | 学习目标 |
---|---|
基础篇 | 能够创建SpringBoot工程 基于SpringBoot实现ssm/ssmp整合 |
应用篇 | 能够掌握SpringBoot程序多环境开发 能够基于Linux系统发布SpringBoot工程 能够解决线上灵活配置SpringBoot工程的需求 能够基于SpringBoot整合任意第三方技术 |
原理篇 | 掌握SpringBoot内部工作流程 理解SpringBoot整合第三方技术的原理 实现自定义开发整合第三方技术的组件 |
番外篇 | 掌握SpringBoot整合非常见的第三方技术 掌握相同领域的更多的解决方案,并提升同领域方案设计能力 |
整体课程包含的内容就是这些啦,要想完成前面这些内容的学习,顺利的达成学习目标,有些东西还是要提前和大家说清楚的。SpringBoot课程不像是Java基础,不管你有没有基础,都可以听一听,这个课程还真不行,需要一定的前置知识。下面给大家列表一些前置知识,如果还有不太会的,需要想办法快速补救一下
课程前置知识说明
课程单元 | 前置知识 | 要求 |
---|---|---|
基础篇 | Java基础语法 | 面向对象,封装,继承,多态,类与接口,集合,IO,网络编程等 |
基础篇 | Spring与SpringMVC | 知道Spring是用来管理bean,能够基于Restful实现页面请求交互功能 |
基础篇 | Mybatis与Mybatis-Plus | 基于Mybatis和MybatisPlus能够开发出包含基础CRUD功能的标准Dao模块 |
基础篇 | 数据库MySQL | 能够读懂基础CRUD功能的SQL语句 |
基础篇 | 服务器 | 知道服务器与web工程的关系,熟悉web服务器的基础配置 |
基础篇 | maven | 知道maven的依赖关系,知道什么是依赖范围,依赖传递,排除依赖,可选依赖,继承 |
基础篇 | web技术(含vue,ElementUI) | 知道vue如何发送ajax请求,如何获取响应数据,如何进行数据模型双向绑定 |
应用篇 | Linux(CenterOS7) | 熟悉常用的Linux基础指令,熟悉Linux系统目录结构 |
应用篇 | 实用开发技术 | 缓存:Redis、MongoDB、…… 消息中间件:RocketMq、RabbitMq、…… |
原理篇 | Spring | 了解Spring加载bean的各种方式 知道Spring容器底层工作原理,能够阅读简单的Spring底层源码 |
看着略微有点多,其实还好吧,如果个别技术真的不会,在学习课程的时候多用心听就好,基础篇是可以跟着学下来了,后面的实用篇和原理篇就比较难了。比如我要在Linux系统下操作,命令我就直接使用了,然后你看不懂可能学习起来就比较心累了。
课程安排就说到这里了,下面进入到SpringBoot基础篇的学习
SpringBoot基础篇
在基础篇中,我给学习者的定位是先上手,能够使用SpringBoot搭建基于SpringBoot的web项目开发,所以内容设置较少,主要包含如下内容:
- SpringBoot快速入门
- SpringBoot基础配置
- 基于SpringBoot整合SSMP
JC-1.快速上手SpringBoot
学习任意一项技术,首先要知道这个技术的作用是什么,不然学完以后,你都不知道什么时候使用这个技术,也就是技术对应的应用场景。SpringBoot技术由Pivotal团队研发制作,功能的话简单概括就是加速Spring程序的开发,这个加速要从如下两个方面来说
- Spring程序初始搭建过程
- Spring程序的开发过程
通过上面两个方面的定位,我们可以产生两个模糊的概念:
- SpringBoot开发团队认为原始的Spring程序初始搭建的时候可能有些繁琐,这个过程是可以简化的,那原始的Spring程序初始搭建过程都包含哪些东西了呢?为什么觉得繁琐呢?最基本的Spring程序至少有一个配置文件或配置类,用来描述Spring的配置信息,莫非这个文件都可以不写?此外现在企业级开发使用Spring大部分情况下是做web开发,如果做web开发的话,还要在加载web环境时加载时加载指定的spring配置,这都是最基本的需求了,不写的话怎么知道加载哪个配置文件/配置类呢?那换了SpringBoot技术以后呢,这些还要写吗?谜底稍后揭晓,先卖个关子
- SpringBoot开发团队认为原始的Spring程序开发的过程也有些繁琐,这个过程仍然可以简化。开发过程无外乎使用什么技术,导入对应的jar包(或坐标)然后将这个技术的核心对象交给Spring容器管理,也就是配置成Spring容器管控的bean就可以了。这都是基本操作啊,难道这些东西SpringBoot也能帮我们简化?
带着上面这些疑问我们就着手第一个SpringBoot程序的开发了,看看到底使用SpringBoot技术能简化开发到什么程度。
温馨提示
如果对Spring程序的基础开发不太懂的小伙伴,看到这里可以弃坑了,下面的内容学习需要具备Spring技术的知识,硬着头皮学不下去的。
JC-1-1.SpringBoot入门程序制作(一)
下面让我们开始做第一个SpringBoot程序吧,本课程基于Idea2020.3版本制作,使用的Maven版本为3.6.1,JDK版本为1.8。如果你的环境和上述环境不同,可能在操作界面和操作过程中略有不同,只要软件匹配兼容即可(说到这个Idea和Maven,它们两个还真不是什么版本都能搭到一起的,说多了都是泪啊)。
下面使用SpringBoot技术快速构建一个SpringMVC的程序,通过这个过程体会简化二字的含义
步骤①:创建新模块,选择Spring Initializr,并配置模块相关基础信息
特别关注:第3步点击Next时,Idea需要联网状态才可以进入到后面那一页,如果不能正常联网,就无法正确到达右面那个设置页了,会一直联网转转转
特别关注:第5步选择java版本和你计算机上安装的JDK版本匹配即可,但是最低要求为JDK8或以上版本,推荐使用8或11
步骤②:选择当前模块需要使用的技术集
按照要求,左侧选择web,然后在中间选择Spring Web即可,选完右侧就出现了新的内容项,这就表示勾选成功了
关注:此处选择的SpringBoot的版本使用默认的就可以了,需要说一点,SpringBoot的版本升级速度很快,可能昨天创建工程的时候默认版本是2.5.4,今天再创建工程默认版本就变成2.5.5了,差别不大,无需过于纠结,回头可以到配置文件中修改对应的版本
步骤③:开发控制器类
//Rest模式
@RestController
@RequestMapping("/books")
public class BookController {
@GetMapping
public String getById(){
System.out.println("springboot is running...");
return "springboot is running...";
}
}
入门案例制作的SpringMVC的控制器基于Rest风格开发,当然此处使用原始格式制作SpringMVC的程序也是没有问题的,上例中的@RestController与@GetMapping注解是基于Restful开发的典型注解
关注:做到这里SpringBoot程序的最基础的开发已经做完了,现在就可以正常的运行Spring程序了。可能有些小伙伴会有疑惑,Tomcat服务器没有配置,=-Spring也没有配置,什么都没有配置这就能用吗?这就是SpringBoot技术的强大之处。关于内部工作流程后面再说,先专心学习开发过程
步骤④:运行自动生成的Application类
使用带main方法的java程序的运行形式来运行程序,运行完毕后,控制台输出上述信息。
不难看出,运行的信息中包含了8080的端口,Tomcat这种熟悉的字样,难道这里启动了Tomcat服务器?是的,这里已经启动了。那服务器没有配置,哪里来的呢?后面再说。现在你就可以通过浏览器访问请求的路径,测试功能是否工作正常了
访问路径: http://localhost:8080/books
是不是感觉很神奇?目前的效果其实依赖的底层逻辑还是很复杂的,但是从开发者角度来看,目前只有两个文件展现到了开发者面前
-
pom.xml
这是maven的配置文件,描述了当前工程构建时相应的配置信息
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.5.4</version> </parent> <groupId>com.itheima</groupId> <artifactId>springboot_01_01_quickstart</artifactId> <version>0.0.1-SNAPSHOT</version> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> </project>
配置中有两个信息需要关注,一个是parent,也就是当前工程继承了另外一个工程,干什么用的后面再说,还有依赖坐标,干什么用的后面再说
-
Application类
@SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
这个类功能很简单,就一句代码,前面运行程序就是运行的这个类
到这里我们可以大胆推测一下,如果上面这两个文件没有的话,SpringBoot肯定没法玩,看来核心就是这两个文件了。由于是制作第一个SpringBoot程序,先不要关注这两个文件的功能,后面详细讲解内部工作流程。
通过上面的制作,我们不难发现,SpringBoot程序简直太好写了,几乎什么都没写,功能就有了,这也是SpringBoot技术为什么现在这么火的原因,和Spirng程序相比,SpringBoot程序在开发的过程中各个层面均具有优势
类配置文件 | Spring | SpringBoot |
---|---|---|
pom文件中的坐标 | 手工添加 | 勾选添加 |
web3.0配置类 | 手工制作 | 无 |
Spring/SpringMVC配置类 | 手工制作 | 无 |
控制器 | 手工制作 | 手工制作 |
一句话总结一下就是能少写就少写,能不写就不写,这就是SpringBoot技术给我们带来的好处,行了,现在你就可以动手做一做SpringBoot程序了,看看效果如何,是否真的帮助你简化开发了
总结
- 开发SpringBoot程序可以根据向导进行联网快速制作
- SpringBoot程序需要基于JDK8以上版本进行制作
- SpringBoot程序中需要使用何种功能通过勾选选择技术,也可以手工添加对应的要使用的技术(后期讲解)
- 运行SpringBoot程序通过运行Application程序入口进行
思考
前面制作的时候说过,这个过程必须联网才可以进行,但是有些时候你会遇到一些莫名其妙的问题,比如基于Idea开发时,你会发现你配置了一些坐标,然后Maven下载对应东西的时候死慢死慢的,甚至还会失败。其实这和Idea这款IDE工具有关,万一Idea不能正常访问网络的话,我们是不是就无法制作SpringBoot程序了呢?咱们下一节再说
JC-1-2.SpringBoot入门程序制作(二)
如果Idea不能正常联网,这个SpringBoot程序就无法制作了吗?开什么玩笑,世上IDE工具千千万,难道SpringBoot技术还必须基于Idea来做了?这是不可能的。开发SpringBoot程序,可以不基于任意的IDE工具进行,其实在SpringBoot的官网里面就可以直接创建SpringBoot程序
SpringBoot官网和Spring的官网是在一起的,都是 spring.io 。你可以通过项目一级一级的找到SpringBoot技术的介绍页,然后在页面中间部位找到如下内容
步骤①:点击Spring Initializr后进入到创建SpringBoot程序的界面上,下面是输入信息的过程,和前面的一样,只是界面变了而已,根据自己的要求,在左侧选择对应信息和输入对应的信息即可
步骤②:右侧的ADD DEPENDENCIES用于选择使用何种技术,和之前勾选的Spring WEB是在做同一件事,仅仅是界面不同而已,点击后打开网页版的技术选择界面
步骤③:所有信息设置完毕后,点击下面左侧按钮,生成一个文件包
步骤④:保存后得到一个压缩文件,这个文件打开后就是创建的SpringBoot工程文件夹了
步骤⑤:解压缩此文件后,得到工程目录,在Idea中导入即可使用,和之前创建的东西完全一样。下面就可以自己创建一个Controller测试一下是否能用了。
温馨提示
做到这里其实可以透漏一个小秘密,Idea工具中创建SpringBoot工程其实连接的就是SpringBoot的官网,走的就是这个过程,只不过Idea把界面给整合了一下,读取到了Spring官网给的信息,然后展示到了Idea的界面中而已,不信你可以看看下面这个步骤
上面描述了连接的网址,再看看SpringBoot官网创建工程的URL地址,是不是一样?
总结
-
打开SpringBoot官网,选择Quickstart Your Project
-
创建工程
并保存项目
-
解压项目,通过IDE导入项目
思考
现在创建工程靠的是访问国外的Spring主站,但是互联网访问是可以控制的,如果一天这个网站你在国内都无法访问了,那前面这两种方式都无法创建SpringBoot工程了,这时候又该怎么解决这个问题呢?咱们下一节再说
JC-1-3.SpringBoot入门程序制作(三)
前面提到网站如果被限制访问了,该怎么办?开动脑筋想一想,不管是方式一还是方式二其实都是走的同一个地方,也就是SpringBoot的官网创建的SpringBoot工程,那如果我们国内有这么一个网站能提供这样的功能,是不是就解决了呢?必然的嘛,新的问题又来了,这个国内的网站有吗?还真有,阿里提供了一个,下面问题就简单了,网址告诉我们就OK了,没错,就是这样
创建工程时,切换选择starter服务路径,然后手工收入阿里云提供给我们的使用地址即可。地址:http://start.aliyun.com或https
标签:SpringBoot,Spring,配置,boot,学习,spring,讲义,starter From: https://www.cnblogs.com/smithforest/p/17147501.html