前言
描述
SpringBoot诞生的目的就是用来简化Spring应用开发过程,它使用了特定的方式来进行配置,从而使得开发人员不在需要定义一系列样板化的配置文件,从而专注于核心业务开发。
基本原理
SpringBoot提供了开箱即用的设置,这样你就可以有条不紊地开始。多数SpringBoot应用需要很少的Spring配置
概述
主要特性
最重要的四个核心特性:
自动配置:SpringBoot针对很多Spring应用程序常见的功能自动提供相关配置
依赖关系:你只需告诉SpringBoot所需的功能类型,SpringBoot将所需的库添加到构建库中。
命令行界面:这是SpringBoot的可选特性,可让你编写代码并完成应用程序而无需构建传统项目。
Autuator:让您能够监控运行中的SpringBoot应用程序
SpringBoot创建流程:
创建Maven项目
添加依赖
编写代码
运行程序
SpringBoot基础?
SpringBoot启动类与注解@SpringBootApplication
@SpringBootApplication 是一个三合一的注解
@SpringBootConfiguration? :该注解功能和@Configuration注解类似,用于修饰一个配置类,以启动基于Java的配置。 @EnableAutoConfiguration? :注解用于启用自动配置,以省去繁琐的手动配置。 @ComponentScan :该注解用于启用组件扫描,这样你创建的控制器和其他组件将自动被发现并注册为Spring应用程序上下文中的bean。
SpringBoot自动配置原理?
SpringBoot在运行项目启动类时会加载classpath上各个库中META-INF目录下的spring.factories文件,将这些配置文件中的配置载入Spring容器,实现自动配置。
使用SpringBoot开发Web应用程序?
使用SpringBoot创建Web应用程序
IDEA
1、创建一个新项目 2、选择spring initalizr , 可以看到默认就是去官网的快速构建工具那里实现 3、填写项目信息 4、选择初始化的组件(初学勾选 Web 即可) 5、填写项目路径 6、等待项目构建成功
Thymeleaf语法(这里简单介绍)?
变量表达式 ${...}
用于显示某个变量的值,可以是普通表达式的计算结果,或者是服务端返回的某个属性的值。
选择变量表达式 *{...}
可以用于在内层引用外层对象,从而简化表达式书写
消息表达式 #{...}
可用于读取和显示文本文件中的内容,如属性文件,主要用于显示读取的文本消息或实现国际化。
URL链接表达式 @{...}
片段表达式 ~{...}
用于定义模板内容,并在模板页面中引用模板页或模板片段,相当于定义模板内容,然后可以将该片段在任何模板页面的任何地方使用。
在SpringBoot 程序中处理JSON数据
常用的JSON处理器
Jackson:SpringBoot默认的
Gson
Fastjson:阿里开发的(越来越多的阿里开发的,后面会接触到更多阿里开发的)
Json-lib
在SpringBoot程序中处理JSON数据
一般在src/main/resources/static/errot/404.html(等等路径)
使用SpringBoot构建ReatAPI?
REST(Reqresentational State Transfer-表述性状态转移)是一种设计API的模式,一种软件架构风格。构建REST API 时最常用的数据格式是JSON,源于JSON能直接被JavaScript读取,所欲JSON格式编写的REST风格的API具有简单、易读、易用的特点。
最常用
GET:获取资源
POST:添加一个新资源
PUT:添加或者修改一个资源,存在就修改,否则添加,这里的修改是完整修改
DELETE:删除资源
创建REST API 需要使用SpringMVC提供的一些注解,包括@PostMapping、@DeleteMapping、@PutMapping、@GetMapping分别对应增删改查
SpringBoot的数据访问?
自带默认的数据源就不说课,一般是Druid(阿里的)
pom.xml
<!-- SpringBoot的依赖配置-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.5.14</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- 阿里数据库连接池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>${druid.version}</version>
</dependency>
<druid.version>1.2.11</druid.version>
?application.yml
# 数据源配置
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driverClassName: com.mysql.cj.jdbc.Driver
druid:
# 主库数据源
master:
url: jdbc:mysql://localhost:3306/数据库名?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: root
# 从库数据源
slave:
# 从数据源开关/默认关闭
enabled: false
url:
username:
password:
# 初始连接数
initialSize: 5
# 最小连接池数量
minIdle: 10
# 最大连接池数量
maxActive: 20
# 配置获取连接等待超时的时间
maxWait: 60000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
timeBetweenEvictionRunsMillis: 60000
# 配置一个连接在池中最小生存的时间,单位是毫秒
minEvictableIdleTimeMillis: 300000
# 配置一个连接在池中最大生存的时间,单位是毫秒
maxEvictableIdleTimeMillis: 900000
# 配置检测连接是否有效
validationQuery: SELECT 1 FROM DUAL
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
webStatFilter:
enabled: true
statViewServlet:
enabled: true
# 设置白名单,不填则允许所有访问
allow:
url-pattern: /druid/*
# 控制台管理用户名和密码
login-username: ruoyi
login-password: 123456
filter:
stat:
enabled: true
# 慢SQL记录
log-slow-sql: true
slow-sql-millis: 1000
merge-sql: true
wall:
config:
multi-statement-allow: true
SpringDataJPA
JPA是一种规范,一种Java持久化解决方案,是Java EE标准之一。其中Hibernate框架就是JPA规范最流行和最强大的实现之一
SpringBoot程序中集成MyBatis?
1.创建数据库和表
2.创建SpringBoot应用程序
3.添加MyBatis启动依赖和其他必要依赖
4.配置数据源
5.创建实体类
6.创建或生成Mapper接口和Mapper映射文件
7.开启Mapper组件的包扫描
8.创建Controller、Service等组件
9.部署和运行程序
这里提到一个常用的分页插件PageHelper,两步
添加PageHelper依赖
<!-- pagehelper 分页插件 -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>${pagehelper.boot.version}</version>
</dependency>
使用PageHelper
SpringBoot程序的消息通信?
JMS消息传递模型
点对点模型(Point-to-Point,P2P)
发布/订阅模型(Publish/Subscribe,Pub/Sub)
1.点对点消息传递域的特点如下:
a.每个消息只能有一个消费者
b.消息的生产者和消费者之间没有时间上的相关性。无论消费者在生产者发送消息的时候是否处于运行状态,它都可以提取消息。
? ? ??
2.发布/订阅消息传递域的特点如下:
a.每个消息可以有多个消费者
b.生产者和消费者之间有时间上的相关性。订阅一个主题的消费者只能消费自它订阅之后发布的消息。JMS规范允许客户创建持久订阅,这在一定程度上放松了时间上的相关性要求。持久订阅允许消费者消费它在未处于激活状态时发送的消息。
3.在点对点消息传递域中,目的地被称为队列(queue);在发布/订阅消息传递域中,目的地被称为主题(topic)
SpringBoot程序中集成ActiveMQ?
SpringBoot实现点对点模型消息传送
执行步骤:
1.启动ActiveMQ服务
2.创建客户端程序
3.添加ActiveMQ启动依赖
4.配置ActiveMQ属性
5.编写消息发送程序
6.编写消息接收程序
7.测试发送和接收消息
SpringBoot实现发布/订阅模型消息传递?
和点对点类似,只需改一个配置
jms:
pub-sub-domain: true
SpringBoot测试?
软件测试概述
软件测试方法
从是否关心软件内部结构和具体实现的角度划分
1.黑盒测试
2.白盒测试
3.灰盒测试
从是否执行代码角度划分
1.静态测试
2.动态测试
从软件开发的过程按阶段划分
1.单元测试
2.集成测试
3.系统测试
4.验收测试
|