SpringBoot2学习笔记02-核心功能

粗略的看完了雷神的SpringBoot2的教程,这是第一季的第二部分的内容,希望出慢一点,毕竟源代码解析部分都没怎么看。。等会用了再看,教程指路:这里


目录

1.配置文件

yaml语法

基本语法

案例

添加提示

2.Web开发

1.idea配置

2.静态资源访问

1.webjar

2.欢迎页

3.favicon图标

4.静态资源的配置原理(暂略)

3.请求参数处理

1.请求映射

请求映射原理(暂略)

2.普通参数和基本注解

[1]普通注解

[2]复杂注解

3.POJO封装过程(暂略)

4.参数处理原理(暂略)

5.响应数据和内容协商(都是源码,暂略)

响应数据(暂略)

内容协商(暂略)

6.视图解析和引擎模板

视图解析-Thymeleaf

7.拦截器

8.文件上传

9.SpringBoot异常处理

10.web原生组件注入(Servlet,Filter,Listener)

1.使用Servlet API

11.嵌入式Servlet容器

定制Servlet容器

3.数据访问-SQL

1.数据源的自动配置

2.使用第三方的数据源(Druid)

3.使用第三方的数据源(druid)方法二

4.整合MyBatis操作-配置文件方式

5.整合MyBatis操作-纯注解方式(了解)

6.整合MyBatis_Plus

CRUD案例

Mybatis-Plus如何分页

Mybatis-Plus如何删除用户

4.数据访问-NoSQL(略)

5.单元测试

断言(assertions)

简单断言

数组断言

组合断言

异常断言

超时断言

快速失败

前置条件(assumptions)

嵌套测试

参数化测试

6.指标监控(了解,p77-80)

7.SpringBoot高级特性

Profile-环境切换

使用方式1

使用方式2-命令行

profile-条件装配

profile-分组

外部化配置

自定义Start(了解)

0.小知识点


 

1.配置文件

以前配置文件为properties文件,同时兼容一种YAML文件,适合用来做以数据为中心的配置文件

简写为,yml。如果我们有两个配置文件我们会优先使用.propertyies配置文件

注意:单引号和双引号是有区别的,双引号会使用转移字符,单引号不会使用转义字符。

https://start.aliyun.com/

yaml语法

基本语法

 SpringBoot2学习笔记02-核心功能_第1张图片

数据类型

 SpringBoot2学习笔记02-核心功能_第2张图片 SpringBoot2学习笔记02-核心功能_第3张图片 SpringBoot2学习笔记02-核心功能_第4张图片

案例

 SpringBoot2学习笔记02-核心功能_第5张图片  

添加提示

为了使用yml文件的时候有提示我们需要添加依赖

 SpringBoot2学习笔记02-核心功能_第6张图片

由于和真正的业务逻辑无关,所以在最后打包的时候我们不需要加载这个内容,提高速度

 SpringBoot2学习笔记02-核心功能_第7张图片

2.Web开发

1.idea配置

选择spring  initializer 勾选web,lobok,tools

 

这里注意如果网络不行我们使用阿里的地址https://start.aliyun.com/,在一开始不选择spring.io

2.静态资源访问

静态资源目录为:类路径:

  SpringBoot2学习笔记02-核心功能_第8张图片

只要静态资源放在下面这些路径下就可以直接访问到

访问方式为:当前项目根路径/+静态资源名

原理:静态映射/**。请求进来之后先去找Controller看能不能处理,如果不能处理我们在寻找静态资源处理器,如果静态资源也找不到就会404

 SpringBoot2学习笔记02-核心功能_第9张图片

由于开始的访问路径为类路径,但是这样不方便我们以后为拦截器的设置,所以我们可以在前面添加一个地址。

 SpringBoot2学习笔记02-核心功能_第10张图片 SpringBoot2学习笔记02-核心功能_第11张图片

上面这个路径就要修改为下面这个路径

 

上述的操作都是改变的访问路径,我们同样可以修改静态资源的存放路径,修改了存放路径之后只要不是存放在修改后路径的静态文件都是无法访问到的。

 SpringBoot2学习笔记02-核心功能_第12张图片

1.webjar

 SpringBoot2学习笔记02-核心功能_第13张图片

2.欢迎页

在静态资源路径下写index.html

或者是能够处理/index请求的Controller

都会作为欢迎页

3.favicon图标

把所需要的图片使用favicon.ico的名称保存在静态资源路径下即可

4.静态资源的配置原理(暂略)

3.请求参数处理

1.请求映射

 SpringBoot2学习笔记02-核心功能_第14张图片

要使用rest风格的代码我们需要手动开启

 SpringBoot2学习笔记02-核心功能_第15张图片 SpringBoot2学习笔记02-核心功能_第16张图片 SpringBoot2学习笔记02-核心功能_第17张图片

rest原理:

 SpringBoot2学习笔记02-核心功能_第18张图片 

如果想要修改name中的_method

 SpringBoot2学习笔记02-核心功能_第19张图片

请求映射原理(暂略)

 

 

2.普通参数和基本注解

 SpringBoot2学习笔记02-核心功能_第20张图片

[1]普通注解

 SpringBoot2学习笔记02-核心功能_第21张图片

@PathVariable("id")案例:

 SpringBoot2学习笔记02-核心功能_第22张图片 

@RequestHeader案例:

 

@RequestParam案例:

  

@CookieValue案例

 SpringBoot2学习笔记02-核心功能_第23张图片

@RequestBody案例:

 SpringBoot2学习笔记02-核心功能_第24张图片 

@RequestAttribute案例:

 SpringBoot2学习笔记02-核心功能_第25张图片

@MatrixVariable案例:

使用分号的都是使用矩阵变量的方式。

注意:SpringBoot默认禁用了矩阵变量的功能

我们需要手动开启:原理:对于路径的处理,UrlPathHelper进行解析,使用removeSemicolonContent支持矩阵变量

手动开启方案:

 SpringBoot2学习笔记02-核心功能_第26张图片 SpringBoot2学习笔记02-核心功能_第27张图片 SpringBoot2学习笔记02-核心功能_第28张图片

什么是矩阵变量:

  SpringBoot2学习笔记02-核心功能_第29张图片 SpringBoot2学习笔记02-核心功能_第30张图片

上述方式会出错,因为我们需要使用功能路径变量表示的方法

 SpringBoot2学习笔记02-核心功能_第31张图片 SpringBoot2学习笔记02-核心功能_第32张图片

矩阵变量必须有url路径变量才可以被解析

[2]复杂注解

  SpringBoot2学习笔记02-核心功能_第33张图片

 

3.POJO封装过程(暂略)

 

4.参数处理原理(暂略)

 

5.响应数据和内容协商(都是源码,暂略)

 SpringBoot2学习笔记02-核心功能_第34张图片

响应数据(暂略)

 

内容协商(暂略)

根据客户端接收UN鞥李的不同,返回不同媒体类型的数据

需要引入依赖

 SpringBoot2学习笔记02-核心功能_第35张图片

 

6.视图解析和引擎模板

 

视图解析-Thymeleaf

在需要使用的爷面前添加上约束

SpringBoot默认不支持JSP,需要引入第三方的模板引擎技术实现页面渲染

我们可以使用Thymeleaf模板引擎

 SpringBoot2学习笔记02-核心功能_第36张图片

小案例:

引入starter

 

自动配置好了thymeleaf

  SpringBoot2学习笔记02-核心功能_第37张图片 SpringBoot2学习笔记02-核心功能_第38张图片 SpringBoot2学习笔记02-核心功能_第39张图片

7.拦截器

boot中的拦截器为:HandlerInterceptor

 SpringBoot2学习笔记02-核心功能_第40张图片

/**表示拦截所有内容,包括控制器,静态资源

使用案例:

   SpringBoot2学习笔记02-核心功能_第41张图片 SpringBoot2学习笔记02-核心功能_第42张图片 

8.文件上传

前端页面需要的内容:

 SpringBoot2学习笔记02-核心功能_第43张图片 

Controller中的内容:

 SpringBoot2学习笔记02-核心功能_第44张图片

其中的逻辑

 SpringBoot2学习笔记02-核心功能_第45张图片

修改文件上传的相关参数:

 

9.SpringBoot异常处理

 SpringBoot2学习笔记02-核心功能_第46张图片 SpringBoot2学习笔记02-核心功能_第47张图片

自定义错误页面:在静态资源文件夹下,或者是templates文件夹下的error文件夹使用404.html,或者500.html

 SpringBoot2学习笔记02-核心功能_第48张图片

10.web原生组件注入(Servlet,Filter,Listener)

1.使用Servlet API

指定原生的servlet组件都放在哪里:使用webXXXXX的前提

 SpringBoot2学习笔记02-核心功能_第49张图片

使用WebServlet效果:直接响应,没有结果Spring的拦截器

 SpringBoot2学习笔记02-核心功能_第50张图片

使用webFilter的案例

 SpringBoot2学习笔记02-核心功能_第51张图片

使用WebListener

 SpringBoot2学习笔记02-核心功能_第52张图片

 

第二种方式使用servlet API使用RegistrationBean

只需要写一个配置类,放入容器中

ServletRegistrationBean

 SpringBoot2学习笔记02-核心功能_第53张图片

FilterRegistrationBean

 SpringBoot2学习笔记02-核心功能_第54张图片 SpringBoot2学习笔记02-核心功能_第55张图片

ServletRegistrationBean

 

11.嵌入式Servlet容器

  SpringBoot2学习笔记02-核心功能_第56张图片

定制Servlet容器

 SpringBoot2学习笔记02-核心功能_第57张图片 SpringBoot2学习笔记02-核心功能_第58张图片

3.数据访问-SQL

1.数据源的自动配置

导入依赖

 SpringBoot2学习笔记02-核心功能_第59张图片

官方不导入驱动?因为我们不知道使用什么数据库,不同数据库的驱动不同、

我们导入驱动,这里可以不写版本,有版本仲裁(默认8.0.23)

 SpringBoot2学习笔记02-核心功能_第60张图片

配置文件

 SpringBoot2学习笔记02-核心功能_第61张图片

测试

 SpringBoot2学习笔记02-核心功能_第62张图片

2.使用第三方的数据源(Druid)

导入依赖

 SpringBoot2学习笔记02-核心功能_第63张图片

配置信息

 SpringBoot2学习笔记02-核心功能_第64张图片

或者是

 SpringBoot2学习笔记02-核心功能_第65张图片

测试

 SpringBoot2学习笔记02-核心功能_第66张图片

配置druid监控页面

 

配置文件中的配置

 SpringBoot2学习笔记02-核心功能_第67张图片 SpringBoot2学习笔记02-核心功能_第68张图片 SpringBoot2学习笔记02-核心功能_第69张图片 SpringBoot2学习笔记02-核心功能_第70张图片

由于之前的配置我们小组可以直接在yml中配置即可

 SpringBoot2学习笔记02-核心功能_第71张图片

3.使用第三方的数据源(druid)方法二

直接使用第三方starter

 SpringBoot2学习笔记02-核心功能_第72张图片

伺候我们只需要放到配置文件中即可

 SpringBoot2学习笔记02-核心功能_第73张图片

4.整合MyBatis操作-配置文件方式

 SpringBoot2学习笔记02-核心功能_第74张图片 SpringBoot2学习笔记02-核心功能_第75张图片

首先需要引入依赖

 SpringBoot2学习笔记02-核心功能_第76张图片

创建配置类xml

 SpringBoot2学习笔记02-核心功能_第77张图片

注意这里需要标明@Mapper注解才能被扫描到

 SpringBoot2学习笔记02-核心功能_第78张图片 SpringBoot2学习笔记02-核心功能_第79张图片 SpringBoot2学习笔记02-核心功能_第80张图片

配置mybatis规则

 SpringBoot2学习笔记02-核心功能_第81张图片

测试:

因为我们都是service和mybatis交互所以我们创建service

 SpringBoot2学习笔记02-核心功能_第82张图片 SpringBoot2学习笔记02-核心功能_第83张图片

记得开启驼峰命名策略否则可能匹配不上

 SpringBoot2学习笔记02-核心功能_第84张图片

或者是:注意这个地方我们只能配置一个,如果使用configuration我们就不能指定config-location。

这个是一个推荐写法:其中configuration指定mybatis全局配置文件中的相关配置项

 SpringBoot2学习笔记02-核心功能_第85张图片

使用自增主键:

 

5.整合MyBatis操作-纯注解方式(了解)

 SpringBoot2学习笔记02-核心功能_第86张图片 

6.整合MyBatis_Plus

MP是一个MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,为了简化开发提高效率。

首先引入配置文件

 SpringBoot2学习笔记02-核心功能_第87张图片 SpringBoot2学习笔记02-核心功能_第88张图片

导入数据库数据

数据源配置

在启动类中添加MapperScan

 SpringBoot2学习笔记02-核心功能_第89张图片

准备bean类,这个地方的唯一要求就是我们的所有属性都需要在数据库中有,但是我们可以通过注解标明这是一个不存在的属性。(我认为这里不能存在不存在属性是因为我们是继承的基类,基类中的方法会检查左右的属性,不管是否为临时属性,并且返回的也是全部信息,所以我们需要特地标注这个为不存在的属性)

 SpringBoot2学习笔记02-核心功能_第90张图片

我们的Mapper继承(extends)了基类的Mapper之后我们可以不用自己写简单的CUDR操作

 SpringBoot2学习笔记02-核心功能_第91张图片

基类中的对象的查找方法为:我们直接在数据库中查找和类名相同的表,如果不是一一对应的我们就需要使用一个注解

 SpringBoot2学习笔记02-核心功能_第92张图片

CRUD案例

Mybatis-Plus如何分页

需要先启用插件

 SpringBoot2学习笔记02-核心功能_第93张图片 

之后开始分页

  SpringBoot2学习笔记02-核心功能_第94张图片

补充分页信息

 SpringBoot2学习笔记02-核心功能_第95张图片 

使用数据的方式为page.records。这样才能取到数据。

前端页面

 SpringBoot2学习笔记02-核心功能_第96张图片  SpringBoot2学习笔记02-核心功能_第97张图片

Mybatis-Plus如何删除用户

   SpringBoot2学习笔记02-核心功能_第98张图片

4.数据访问-NoSQL(略)

 

使用Redis

 

在aliyun上面购买redis。

5.单元测试

 SpringBoot2学习笔记02-核心功能_第99张图片

2.4以上版本不能使用junit4,得手动添加

 SpringBoot2学习笔记02-核心功能_第100张图片

单元测试使用方法

 SpringBoot2学习笔记02-核心功能_第101张图片

注释:

 SpringBoot2学习笔记02-核心功能_第102张图片 

常用注解:

 SpringBoot2学习笔记02-核心功能_第103张图片

断言(assertions)

所有测试之后都会有详细的报告

 

断言的情况下,前面的失败之后后面的不会执行。

简单断言

 SpringBoot2学习笔记02-核心功能_第104张图片 SpringBoot2学习笔记02-核心功能_第105张图片

数组断言

 SpringBoot2学习笔记02-核心功能_第106张图片

组合断言

 SpringBoot2学习笔记02-核心功能_第107张图片

异常断言

断定业务逻辑一定会出现异常

 SpringBoot2学习笔记02-核心功能_第108张图片

超时断言

 SpringBoot2学习笔记02-核心功能_第109张图片

快速失败

 SpringBoot2学习笔记02-核心功能_第110张图片

前置条件(assumptions)

  SpringBoot2学习笔记02-核心功能_第111张图片 

嵌套测试

 

嵌套测试的情况下,外层的Test不能驱动内层的Before(After)等方法。

嵌套测试相当于,每一个嵌套的内部作为一个整体,外部和内部是分开测试的相互独立,当然嵌套里面的嵌套也是和外层独立的。

 SpringBoot2学习笔记02-核心功能_第112张图片

参数化测试

 SpringBoot2学习笔记02-核心功能_第113张图片 SpringBoot2学习笔记02-核心功能_第114张图片

6.指标监控(了解,p77-80)

 SpringBoot2学习笔记02-核心功能_第115张图片 SpringBoot2学习笔记02-核心功能_第116张图片

怎么用

  SpringBoot2学习笔记02-核心功能_第117张图片

测试:

 

暴露所有Endpoints

   SpringBoot2学习笔记02-核心功能_第118张图片 SpringBoot2学习笔记02-核心功能_第119张图片  SpringBoot2学习笔记02-核心功能_第120张图片 SpringBoot2学习笔记02-核心功能_第121张图片

7.SpringBoot高级特性

Profile-环境切换

方便多环境适配,快速环境切换

使用方式1

 SpringBoot2学习笔记02-核心功能_第122张图片 SpringBoot2学习笔记02-核心功能_第123张图片

使用方式2-命令行

命令行最优先。

 

profile-条件装配

 SpringBoot2学习笔记02-核心功能_第124张图片 SpringBoot2学习笔记02-核心功能_第125张图片

profile-分组

 SpringBoot2学习笔记02-核心功能_第126张图片

外部化配置

甚至可以获取到环境变量

  SpringBoot2学习笔记02-核心功能_第127张图片

在以下地点配置配置文件都可以,后面的覆盖前面的,就是后面的优先级高,第五条需要放在linux中

 SpringBoot2学习笔记02-核心功能_第128张图片

自定义Start(了解)

 SpringBoot2学习笔记02-核心功能_第129张图片

 

 

 

 

0.小知识点

1.@RestController:相当于@Controller+@ResponseBody两个注解的结合,返回json数据不需要在方法前面加@ResponseBody注解了,但使用@RestController这个注解,就不能返回jsp,html页面,视图解析器无法解析jsp,html页面

2.@responseBody注解的作用是将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回JSON数据或者是XML

 SpringBoot2学习笔记02-核心功能_第130张图片

3.如何获取值

@RequestParam注解表示,将请求参数绑定到你控制器的方法参数上(是springmvc中接收普通参数的注解)

@PathVariable注解表示,从地址获取参数

或者使用功能@Value

 

4.绑定配置文件

@component 需要先添加这个,因为只有容器才可以使用下面的配置文件

@configurationProperties(prefix ="这里是配置文件中的XXXX")

5.使用thymaleaf抽取公共内容:

 SpringBoot2学习笔记02-核心功能_第131张图片  SpringBoot2学习笔记02-核心功能_第132张图片  SpringBoot2学习笔记02-核心功能_第133张图片 

 

 

 

 

 

 

 

你可能感兴趣的:(SpringBoot2,自学,SpringBoot2,java)