1、起步依赖
1.概述
- 在入门案例中,我们引入了web依赖和test依赖,这两个依赖是SpringBoot中的starter依赖,starter依赖也被称为起步依赖
- SpringBoot 在配置上相比Spring要简单许多,其核心在于spring-boot-starter,在使用SpringBoot来搭建一个项目时,只需要引入官方提供的starter,就可以直接使用,免去了各种配置。starter简单来讲就是引入了一些相关依赖和一些初始化的配置
- Spring官方提供了很多starter,第三方也可以定义starter。为了加以区分,starter从名称上进行了如下规范
-
- Spring官方提供的starter名称为:spring-boot-starter-xxx 例如Spring官方提供的spring-boot-starter-web
-
- 第三方提供的starter名称为:xxx-spring-boot-starter 例如由mybatis提供的mybatis-spring-boot-starter
2.详解
2.1.起步依赖
- 起步依赖其实就是将具备某种功能的坐标打包到一起,可以简化依赖导入的过程。例如,我们导入spring-boot-starter-web这个starter,则和web开发相关的jar包都一起导入到项目中了。如下图所示
- spring-boot-starter-web导入的其实是一个Web框架Spring-MVC的依赖,在SpringBoot项目中自动做了整合,后续我们会进行讲解
2.2.web依赖
- spring-boot-starter-web:内部把关于Web开发所有的依赖都已经导入并且指定了版本,只需引入 spring-boot-starter-web 依赖就可以实现Web开发的需要的功能
2.3.test依赖
- spring-boot-starter-test:内部包含了单元测试所需要的常见依赖
2.4.官方起步依赖
- Spring的官方提供了很多现成的starter,我们在开发相关应用时,只需要引入对应的starter即可
- 每一个起步依赖,都用于开发一个特定的功能,例如:当我们开发中需要使用redis数据库时,只需要在SpringBoot项目中,引入:springboot-starter-redis ,即可导入redis开发所需要的依赖
2、统一版本管理
1.概述
- 在入门案例中,我们通过maven引入的依赖,是没有指定具体的依赖版本号的,这是因为SpringBoot使用了Maven的继承,每一个SpringBoot工程都有一个父工程,依赖的版本号,在父工程中统一管理
2.详解
2.1.spring-boot-starter-parent
- 按住ctrl点击parent中的spring-boot-start-parent可以进入到spring-boot-starter-parent-2.7.14.pom文件,在这个父pom文件中可以看到插件的配置、资源的声明以及Java 版本、编码格式等信息
- SpringBoot最低支持JDK1.8,这也是因为在父pom中定义的版本就是1.8
2.2.spring-boot-dependencies
- 在spring-boot-starter-parent-2.7.14.pom文件中,也有一个parent父依赖,在此父pom中可以看到所有依赖的版本定义,以及dependencyManagement、pluginManagement节点,这就是项目依赖可以省略version 的原因
2.3.Maven管理标签
- properties:在标签内可以把版本号作为变量进行声明,后面dependency中用到版本号时可以用${变量名}的形式代替,这样做的好处在于当版本号发生改变时,只要更新properties标签中的变量就行了,不用更新所有依赖的版本号
- dependencyManagement:在父工程pom文件中声明依赖,但不引入依赖到项目中。在子工程中用到声明的依赖时,可以不加依赖的版本号,这样可以做到统一管理工程中用到的依赖版本
- build:描述了如何编译及打包项目,具体的编译和打包工作是通过其中的plugin配置来实现的,Maven的所有操作其根本都是通过插件进行实现的
- pluginManagement:作用与dependencyManagement一样,也是声明插件但不引入。在子工程中用到声明的插件时,可以不加插件的版本号,这样可以做到统一管理工程中用到的插件版本
3、内嵌Tomcat
1.概述
- 在前一天我们学习过Web服务器Tomcat,我们知道一个程序想要运行需要放入到Web服务器中。但是我们的SpringBoot工程并没有把程序部署在Tomcat下也能运行,原因就是SpringBoot内嵌了Tomcat服务器
2.详解
- SpringBoot的起步依赖spring-boot-starter-web中已经引入了Tomcat,那么也就是意味着当前项目是有Tomcat相关功能的,所以在SpringBoot中可以直接使用Tomcat服务器
- 在SpringBoot项目启动时,其占用的端口号8080就是Tomcat
4、主启动类
- 当一个类有了@SpringBootApplication这个注解他就是主启动类,SpringBoot就是运行这个类的main方法来启动SpringBoot应用
- 启动类位置:必须在项目的公司域名下,如果公司域名下有项目包文件夹,那么应该放在项目包文件夹下,也就是保证启动类是所有Java代码的平级或父级
-
- cn.itsource.项目包文件夹.XxxApp
5、Yml配置文件
1.概述
- 在SpringBoot项目中我们启动时是使用的Tomcat的默认端口号8080,那么如果我们不想使用默认端口号就需要去配置文件中进行修改
- SpringBoot的配置文件有三种,优先级最高的是properties,如果内容发生冲突以properties为主,如果内容不冲突那么都生效
- 我们使用骨架进行SpringBoot项目创建时会有一个默认的配置文件application.properties,只不过里面是空的,SpringBoot的配置文件存放位置就在resources中
2.详解
2.1.properties写法
- properties配置文件是以key=value的方式编写配置,编写比较繁杂不建议使用
2.2.Yaml/Yml写法
- yaml和yml在写法上是一致的,只不过通常我们使用简写yml作为文件后缀
- 编写规则:yaml/yml编写语法极其严格,如果编写错了会有警告,请时常注意右上角的提示
-
- key和value之间除了有冒号在冒号后面还必须有空格:key: value
-
- 配置前缀层级关系只能以一个Tab的空格,不能多也不能少
-
- key和value都区分大小写,如果是驼峰那么一般是以-代替大写,例如:驼峰contextPath替换为context-path
- 注意:编写错误右上角会有提示,有的时候是误报要注意区别
2.3.Profile多环境支持
- 什么是多环境支持:就是在项目中编写多套环境的配置,例如
- 为什么需要多环境支持:编写多套环境配置在不同环境中我们可以进行快速切换,而不需要再去修改原有配置,更加高效
# 最上面的就是默认配置,默认配置不需要指定profile
server:
# 设置端口号
port: 8081
spring:
profiles:
# 要启动的环境标识,如果环境标识在下面找不到那么就启动默认配置
active: dev
# 每套环境中间需要有此分隔符,分隔每套环境
---
server:
# 设置端口号
port: 8082
spring:
config:
activate:
on-profile: pro
---
server:
# 设置端口号
port: 8083
spring:
config:
activate:
on-profile: test
-
- 不同的环境写在不同的Yml文件中,在主yml中进行引用
-
- 环境配置文件命名规则:application-{profile}.yml
SpringMVC
2.1.概述
- 什么是SpringMVC:SpringMVC属于SpringFrameWork的后续产品,SpringMVC是Spring框架中Servlet的一部分
- SpringBoot中已经封装好了SpringMVC框架,我们只需要导入起步依赖spring-boot-starter-web即可使用
- SpringMVC中有一个非常重要的Servlet类,叫做DispatcherServlet,这也是SpringMVC的核心功能
- Spring、SpringMVC、SpringBoot关系如下
2.2.DispatcherServlet
- SpringBoot封装了Spirng,而在Spring中包含了SpringMVC,SpringMVC提供了一个DispatcherServlet类,称之为核心控制器
- DispatcherServlet 负责接收页面发送的请求,然后根据执行的规则,将请求再转发给后面的请求处理器Controller,请求处理器处理完请求之后,最终再由DispatcherServlet给浏览器响应数据
- DispatcherServlet就是SpringMVC框架中提供的一个核心Servlet,专门帮助我们处理请求
2.3.请求&响应对象
- 浏览器发送请求,会携带请求数据,包括:请求行、请求头;请求到达Tomcat之后,Tomcat会负责解析这些请求数据
- 然后将解析后的请求数据会传递给Servlet程序的HttpServletRequest对象,那也就意味着 HttpServletRequest 对象就可以获取到请求数据,例如:请求参数、请求IP、请求头信息等等
- Tomcat还给Servlet程序传递了一个参数 HttpServletResponse,通过这个对象,我们就可以给浏览器设置响应数据
3.接口
- 控制器类中的方法通常而言我们俗称接口,此接口非Java中定义的接口,是两个不同的东西
-
- Controller层的接口:是一个请求方法/控制器类方法
-
- 前端人员:你把SpringBoot入门接口地址给我一下
-
- 后端人员:好的,http://localhost:8080/hello
- 接口也被称为一个资源:请求后端接口也可以是请求后端资源/访问资源
2、Json数据格式
-
- 一个对象:{"key1":"value1","key2":"value2"...}
-
- 多个对象:[{"key1":"value1","key2":"value2"...},{"key1":"value1","key2":"value2"...},{"key1":"value1","key2":"value2"...}]
- 注意:JSON数据格式就是以 "key":value 形式的数据格式,KEY必须 以 "" 包裹起来,并且如果value是字符串也必须以 "" 包裹起来,如果不是字符串那么正常写就可以