开发实用篇
热部署
关于热部署
-
重启(Restart) : 自定义开发代码,包含类、页面、配置文件等,加载位置restart 类加载器
-
重载(ReLoad) :jar包,加载位置base加载器
手工热部署
启动热部署
开启开发者工具
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
激活热部署:Ctrl + F9
自动热部署
激活方式:idea失去焦点5秒后启动热部署
热部署范围配置
默认不触发重启的目录列表
-
/META-INF/maven
-
/META-INF/resources
-
/resources
-
/static
-
/public
-
/temlates
自定义不参与重启排除项
devtools:
restart:
exclude: public/**,static/**
设置高优先级属性禁用热部署
[启动类]
public static void main(String[] args){
System.setProperty("spring.devtools.restart.enabled","false");
SpringApplication.run(SSMPApplication.class);
}
配置高级
@EnableConfigurationProperties
@EnableConfigurationProperties注解可以将使用@ConfigurationProperties注解对应的类加入Spring容器
注意事项:@EnableConfigurationProperties与@Component不能同时使用
接触使用@ConfigurationProperties注释警告
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
</dependency>
宽松绑定
小结:
-
@ConfigurationProperties绑定属性支持属性名宽松绑定
-
@Value注解不支持松散绑定
-
绑定前缀命名规则
Bean属性校验
开启Bean属性校验
-
添加JSR303规范坐标与Hibernate校验框架对应坐标
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
</dependency>
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
</dependency>
-
使用@Validated注解启用校验功能
-
使用具体校验规则规范数据校验格式
测试
在启动测试环境时,可以通过properties参数设置测试环境专用属性
优势:比多环境开发中的测试环境影响范围更小,仅对当前测试类有效
在启动测试环境时,可以通过args参数设置测试环境专用属性
使用@Import注解加载当前测试类专用的配置【小范围】
知识点:
-
方法使用bean注解时,形参无需使用autowired 如果方法不使用bean注解,则形参需要使用autowired注入 原理是:当方法使用bean注解时,内部使用了autowired注解了形参
Web环境模拟测试
虚拟请求测试
虚拟请求状态匹配
数据层测试事务回滚
为测试用例添加事务,SpringBoot会对测试用例对应的事务提交操作进行回滚
如果想在测试用例中提交事务,可以通过@Rollback注解设置
数据层解决方案
SQL
现有数据层解决方案技术选型
Druid + MyBatis-Plus + MySQL
-
数据源:DruidDataSource
-
持久化技术:MyBatis-Plus / MyBatis
-
数据库: MySQL
数据源配置
SpringBoot提供了3种内嵌的数据源对象供开发者选择
-
HikariCP:默认内置数据源对象
-
Tomcat提供DataSource:HikariCP不可用的情况下,且在web环境中,将使用tomcat服务器配置数据源对象
-
Commons DBCP:HikariCP不可用,tomcat也不可用,将使用dbcp数据源
内置持久化解决方案——jdbcTemplate
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
内嵌数据库
SpringBoot提供了3种内嵌数据库供开发者选择,提高开发测试效率
-
H2
-
HSQL
-
Derby
NoSQL
Redis
Redis是一款key-value存储结构的内存级NoSQL数据库
-
支持多种数据存储格式
-
支持持久化
-
支持集群
-
导入SpringBoot整合Redis坐标
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
-
配置Redis[采用默认配置]
-
RedisTemplate 提供操作各种数据存储类型的接口API
ops*:获取各种数据类型操作接口
客户端:
-
RedisTemplate以对象作为key和value,内部对数据进行序列化
-
StringRedisTemplate以字符串作为key和value,与Redis客户端操作等效【常用】
Mongodb
Mongodb是一个开源、高性能、无模式的文档型数据库。NoSQL数据库产品的一种,是最像关系型数据库的非关系型数据库
Mongodb应用场景
淘宝用户数据
-
存储位置:数据库
-
特征:永久性存储,修改频率低
游戏装备数据源、游戏道具数据
-
存储位置:数据库、Mongodb
-
特征:永久性存储与临时性存储相结合、修改频率较高
直播数据、打赏数据、粉丝数据
-
存储位置:数据库、Mongodb
-
特征:永久性存储与临时存储相结合,修改频率极高
物联网数据
-
存储位置:Mongodb
-
特征:临时存储,修改速度飞速
Mongodb的CRUD操作
新增:db.集合名称.insert/save/insertOne(文档)
修改:db.集合名称.remove(条件)
删除:db.集合名称.update(条件,{操作种类 : {文档} })
SpringBoot整合Mongodb
-
导入Mongodb驱动
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
-
配置客户端
spring:
data:
mongodb:
uri: mongodb://localhost/itheima
未完待续~
Elasticsearch(ES)
Elasticsearch是一个分布式全文搜索引擎
索引 倒排索引 创建文档 使用文档