SpringBoot2

SpringBoot2

Java_SSM入门

SpringBoot2 入门

参考课程:黑马程序员SpringBoot2全套视频教程

基础篇(SSM复习拾遗)

SpringBoot入门程序开发

  • SpringBoot是用来简化Spring应用的初始搭建以及开发过程

  • Spring程序与SpringBoot程序对比

    image-20220623083126102

基于阿里云创建项目

手工创建项目

  • 手工创建项目(手工导入坐标)

  • 手工创建项目(手工制作引导类)

    image-20220623084650462

Idea中隐藏指定文件或指定类型文件

  • Setting -> File Types -> Ignored Files and Folders
  • 输入要隐藏的文件名,支持*号通配符
  • 回车确认添加

parent

  • parent
    • 所有SpringBoot项目要继承的项目,定义了若干个坐标版本号(依赖管理,而非依赖),以达到减少依赖冲突的目的
    • parent各版本间存在着诸多坐标版本不同

starter

  • starter

    • spring-boot-starter-web.pom
    • SpringBoot中常见项目名称,定义了当前项目使用的所有依赖坐标,以达到减少依赖配置的目的
  • 开发SpringBoot程序需要导入坐标时通常导入对应的starter,通常一个starter会依赖多个坐标,使用starter可以起到快速配置的作用,达到简化配置的目的

引导类

  • SpringBoot的引导类是Boot工程的执行入口,运行main方法就可以启动项目。
  • SpringBoot工程运行后初始化Spring容器,扫描引导类所在包加载bean

内嵌tomcat

  • Jetty比Tomcat更轻量级,可扩展性更强(相较于Tomcat),谷歌应用引擎(GAE)已全面切换为Jetty

内置服务器

  1. 内嵌tomcat服务器是SpringBoot辅助功能之一
  2. 内嵌Tomcat工作原理是将Tomcat服务器作为对象运行,并将该对象交给Spring容器管理
  3. 变更内嵌服务器思想是去除现有服务器,添加全新的服务器
  • tomcat(默认) apache出品,粉丝多,应用面广,负载了若干较重的插件
  • Jetty 更轻量级,负载性能远不及tomcat
  • undertow undertow,负载性能勉强跑赢tomcat

基础配置

复制工程

  • 原则

    • 保留工程基础结构
    • 抹掉原式工程痕迹
  • 步骤

    1. 在工作空间中复制对应工程,并修改工程名称
    2. 删除与Idea相关配置文件,仅保留src目录与pom.xml文件
    3. 修改pom.xml文件中的artifactId与新工程/模块名相同
    4. 删除name标签
    5. 保留备份工程供后期使用
  • SpringBoot中文文档:https://geekdoc.top/docs/languages/java/spring/spring-boot/2.5.5/reference/html/index.html

  • 配置相关参考文档中:Application.Properties

  • 若properties配置文件,yml配置文件,yaml配置文件同时存在,则相同的依次覆盖,不同的全都生效

yaml语法规则

image-20220623111320989

image-20220623111352113

yaml数据读取

image-20220623160036237

SpringBoot整合JUnit

  • 若test中@SpringBootTest注解的类和工程的引导类包结构位置不匹配,可以使用@ContextConfiguration注解指定测试的引导类,或者使用@SpringBootTest中的classes属性指定引导类

    image-20220623161033031

SpringBoot整合MyBatisPlus

  • 可以使用阿里云创建项目,里面有mp的选项

  • 为方便调试可以开启MyBatisPlus的日志

    image-20220623164801825

SpringBoot整合Druid

  • 指定数据源类型

    image-20220623162411487

  • 变更Druid的配置方式(此方式需要在pom文件中引用Druid的SpringBoot的Starter包)

    image-20220623162458678

基于SpringBoot的SSMP整合案例

业务层开发

  • Service层接口定义域数据层接口定义具有较大区别,不要混用
    • selectByUserNameAndPassword(String username,String password);
    • login(String username,String password);

业务层开发——快速开发

image-20220624103643157

表现层消息一致性处理

  • 设计表现层返回结果的类,用于后端与前端进行数据格式统一,也称为前后端数据协议

    image-20220624111222810

    image-20220624111233907

前后端协议联调

image-20220624111514519

分页功能

image-20220625184517128

image-20220625184535761

image-20220625184618793

image-20220625184634794

image-20220625185156172

条件查询功能

image-20220625191208175

image-20220625191224080

image-20220625191246255

image-20220625191301007

image-20220625191355832

image-20220625191408979

SpringBoot 运维实用篇

打包与运行

SpringBoot项目快速启动步骤

image-20220626081747564

image-20220626081805449

SpringBoot打包插件

image-20220626082249471

可执行jar包结构

image-20220626082325783

jar包描述文件(MANIFEST.MF)

image-20220626082354654

命令行启动常见问题及解决方案

image-20220626082535504

配置高级

临时属性配置

image-20220626160015835

属性加载优先级

image-20220626160137652

配置文件分类

image-20220627100354810

自定义配置文件

image-20220627101042317

image-20220627101059428

image-20220627101108552

image-20220627101216963

多环境开发

image-20220627101804826

多环境份文件配置

image-20220627102033532

image-20220627102108178

image-20220627102250482

image-20220627102742518

多环境开发控制

image-20220627103223063

image-20220627103234896

日志

日志作用

  • 日志(log)作用
    • 编程期调试代码
    • 运营期记录信息
      • 记录日常运行重要信息(峰值流量,平均响应时间)
      • 记录引用报错信息(错误堆栈)
      • 记录运维过程数据(扩容,宕机,报警)

image-20220627104828090

image-20220627104845140

image-20220627104903565

image-20220627105128384

快速创建日志对象

image-20220627105704197

日志输出格式控制

image-20220627105920499

image-20220627110524242

image-20220627110845613

SpringBoot 开发实用篇

热部署

启动热部署

image-20220627164902302

image-20220627165049448

image-20220627165110800

自动启动热部署

image-20220627165530911

image-20220627165558245

热部署范围设置

image-20220627165927032

image-20220627170905179

关闭热部署

image-20220627171405311

可以使用更高级别的属性加载覆盖掉application.yml中的配置,以保证一定不会开启热部署

image-20220627171509145

配置高级

@ConfigurationProperties

image-20220627172649688

image-20220627173014146

@EnableConfigurationProperties

image-20220627172943156

宽松绑定

image-20220627173457255

image-20220627173519838

image-20220627173741350

常用计量单位

image-20220628110259440

image-20220628110315465

数据校验

image-20220628110922739

image-20220628110932827

image-20220628110943654

image-20220628111341164

测试

加载测试专用属性

image-20220628112027695

加载测试专用配置

image-20220628112421515

web环境模拟测试

image-20220628112903379

image-20220628113357802

image-20220628113824958

image-20220628114100095

image-20220628114357720

image-20220628114702494

数据层测试事务回滚

image-20220628124429754

测试用例数据设定

image-20220628125009990

数据层解决方案

SQL

  • 现有数据层解决方案技术选型

    image-20220628125228198

数据源解决方案

  • Springboot提供了3中内嵌的数据源对象供开发者选择
    • HikariCP
    • Tomcat提供DataSource
    • Commons DBCP

image-20220628130043312

image-20220628130116868

持久化解决方案

image-20220628131457416

image-20220628131517226

image-20220628131612057

内嵌数据库(H2)

image-20220628131815507

image-20220628132006815

image-20220628132233578

image-20220628132934417

image-20220628132944562

image-20220628133015506

image-20220628133138454

image-20220628133319549

NoSQL

  • 市面上常见的NoSQL解决方案
    • Redis
    • Mongo
    • ES

Redis

  • Redis是一款key-value存储结构的内存级NoSQL数据库
    • 支持多种数据存储格式
    • 支持持久化
    • 支持集群

image-20220628140645604

image-20220628143245113

image-20220628143301146

image-20220628143311008

image-20220628143347073

image-20220628143425266

image-20220628144100330

image-20220628144117941

image-20220628144540667

image-20220628144605849

image-20220628144617156

Mongodb

  • Mongodb是一个开源、高性能、无模式的文档型数据库。NoSQL数据库产品中的一种,是最像关系型数据库的非关系型数据库

image-20220628154907726

image-20220628160002260

image-20220628160052239

Mongodb基本操作

image-20220628161247934

image-20220628161308187

image-20220628163339447

image-20220628163407218

image-20220628163417044

Elasticsearch(ES)

  • ES是一个分布式全文搜索引擎

image-20220629073056991

  • 索引 倒排索引 创建文档 使用文档

image-20220629075210918

注意禁用Kibana安全提示(Elasticsearch built-in security features are not enabled)

image-20220629081527216

image-20220629083441984

image-20220629083505050

  • 创建文档

    image-20220629164940679

  • 查询文档

    image-20220629165015406

  • 条件查询

    image-20220629165021231

  • 删除文档

    image-20220629165027207

  • 修改文档(全量修改)

    image-20220629165125161

  • 修改文档(部分修改)

    image-20220629165133484

SpringCache

SpringCache简介

image-20221204111440090

SpringCache常用注解

image-20221204111804702

Mysql主从复制

介绍

image-20221204131318783

实现步骤

主机设置:

  1. 在主设备上设置/etc/my.cnf,写入:log-bin=mysql-bin,server-id=1 保存后重启mysqld
  2. 新建用于从复制的用户,并赋予相应的权限
  3. 查看主设备的master状态: show master status;

从机设置:

  1. 在从设备上设置/etc/my.cnf,写入:server-id=2 保存后重启mysqld

  2. 设置slave:

    1
    change master to master_host='172.17.200.140',master_user='xiaoming',master_password='Root@123456',master_log_file='mysql-bin.000002',master_log_pos=2025;
  3. 执行start slave,使用show slave status;查看从机状态

  4. Slave_IO_State 值为 Waiting for source to send event 即为成功

注意:如果使用虚拟机,注意ip和uuid的问题。

读写分离

image-20221204222548052

作者

Dicemy

发布于

2022-06-23

更新于

2022-12-04

许可协议

评论