Springboot基础篇
1.快速上手Springboot
1.基础配置
1.parent
- 作用:指定jar包版本信息信息,避免依赖版本冲突
2.starter
- 作用:SpringBoot中常见项目名称,定义了当前项目使用的所有依赖坐标,以达到减少依赖配置的目的
- 使用任意坐标时,仅书写GAV中的G和A,V由SpringBoot提供,除非SpringBoot未提供对应版本V
-
下面这张图,点进去starter之后是parent提供的版本信息
3.引导类
- 作用: SpringBoot的引导类是Boot工程的执行入口,运行main方法就可以启动项目; SpringBoot工程运行后初始化Spring容器,扫描引导类所在包加载bean
- 扫包方式:当前引导类所在包及其子包
- 此时未启动Tomcat服务器
4.内嵌Tomcat
-
简介: 内嵌Tomcat服务器是SpringBoot辅助功能之一; 内嵌Tomcat工作原理是将Tomcat服务器作为对象运行,并 将该对象交给Spring容器管理
-
Tomcat服务器运行原理:tomcat服务器运行以对象的形式在Spring容器中运行的,由spring容器自动运行tomcat-embed-core内嵌核心,而内嵌核心在spring-boot-starter-web中
-
更换web服务器
tomcat(默认):apache出品,粉丝多,应用面广,负载了若干较重的组件
jetty:更轻量级,负载性能远不及tomcat
undertow:负载性能勉强跑赢tomcat
想更换只需更换对应starter即可
2.Springboot基础配置
1.核心配置文件
- 核心配置文件依赖于starter,所以starter即spring-boot-starter这个starter是所有的SpringBoot的starter的基础依赖,里面定义了SpringBoot相关的基础配置
2.属性配置
3.配置文件
- properties格式
- yml格式**(主流格式)**
- yaml格式
-
配置文件优先级:(了解)
application.properties > application.yml > application.yaml
不同配置文件中相同配置按照加载优先级相互覆盖,不同配置文件中不同配置全部保留
4.yaml文件
-
书写核心规则:数据前面要加空格与冒号隔开
-
格式:
5.yaml文件读取
- 读取单个数据规则
-
读取特殊要求数据规则
-
一次性读取全部数据,解决一次读取一个数据痛点
缺点:无法做到针对性封装,下面引出针对性封装
-
读取特定片段数据,封装为一个对象⭐️
-
目的:通过读取配置文件,封装为一个特定的对象,为项目中各个技术提供特定的配置文件
-
过程:①在配置文件中写入数据②创建一个实体类通过配置信息接收配置文件指定位置信息③使用实体类对象自动装配到指定位置
2.基于Springboot整合SSMP
1.整合Junit
-
本质上还是Spring的测试
-
纯手工制作步骤:
-
自动整合
1.注意classes位置⭐️
-
如果测试类和引导类在一个包或者其子包中,那么会扫描到,不用管;
否则要指定@SpringBootTest的classes属性为引导类名
-
原理:通过找到引导类,来获取IOC容器,获取IOC容器中的对象。没有指定classes属性,那么就会在本包中搜索配置类,没找到爆错
2.整合Mybatis⭐️
- 这里直接设置一个Mapper接口,不需要设置实现类,测试时自动装配直接装配给接口,mybatis底层提供实现类
3.整合Mybatis-plus
4.整合Druid
5.整合第三方技术总结⭐️
3.SSM整合案例
-
分析
1.持久层:CRUD操作
1.基本流程
- 导包的时候一定要相应技术与boot技术的整合包,便于开发
2.MP开启日志,便于看到内部执行过程
3.分页功能
4.条件查询
- 1.创建查询对象
- 2.为查询对象封装条件
- 3.调用bookDao中的selectList方法去实现
2.业务层:
-
名称与数据层区别开来
-
基础操作:CRUD
-
借助mybatis快速开发Service
如果不满足开发要求,那么手动加入到接口中,然后自己实现
3.表现层
-
参数比较少,用@PathVarible;参数比较多,用@RequestBody接收
-
表现层数据统一处理,解决返回格式乱的问题
3.1 前后端数据协议⭐️
-
Service层做操作的时候
查询的返回结果为数据
增删改,返回的数据为boolen类型
-
表现层做返回值的时候
查询类全部的返回R全部用ture和对象,因为一定会查到
查询单个数据有可能不返回true
-
而增删改类的不一定能影响数据
修改删除类的返回R,根据Service层影响数据来设置flag,不用设置data数据值
4. 前后端调用⭐️
4.1 Ajax发送异步请求
4.2 新增操作
-
清理表单数据操作进行的地方:
①每次打开新增数据弹窗的时候
4.3 删除操作
-
要考虑删除失败的情况,因为存在并发删除情况
4.4 修改操作
-
列表功能(回显数据) + 新增功能组合
-
一定要注意变量弹窗属性
-
调用方法一定为PUT,逻辑与增加数据一样
-
注意点:
4.5 异常处理⭐️
- 对所有的异常统一成一样的格式
-
后台异常处理:
-
前后台消息格式统一
-
总结:前后端无论是异常还是提示信息,都交给R中的msg处理,这样实现了提示消息的统一
-
debug错误:
4.6 分页操作⭐️
-
BUG:
-
正常处理
-
总结
-
删除BUG
-
产生:
-
处理:
-
这条方法还是存在问题,如果删除的数据比较多,那么还是存在最大页码问题
4.7 按条件查询
-
思路:将条件查询当成分页中的一部分数据
-
就是将页面上数据收集,然后组织成参数,用selectPage(page,wrapper)处理即可
4.8 总结
据比较多,那么还是存在最大页码问题
- [外链图片转存中…(img-vTD67pC3-1681703463508)]
4.7 按条件查询
-
思路:将条件查询当成分页中的一部分数据
-
就是将页面上数据收集,然后组织成参数,用selectPage(page,wrapper)处理即可
-
[外链图片转存中…(img-v10seFRP-1681703463509)]
-
[外链图片转存中…(img-n9vKtdps-1681703463509)]
[外链图片转存中…(img-MZMmeMW1-1681703463510)]
[外链图片转存中…(img-VEpOtQwF-1681703463511)]
[外链图片转存中…(img-Ry9xwjEZ-1681703463511)]