目录
热部署
手动启动热部署
添加坐标
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
随后开启热部署
快捷键 ctrl+F9
●关于热部署
◆重启 (Restart) :自定义开发代码,包含类、页面、配置文件等,加载位置restart类加载器(热部署属于重启)
◆重载 (ReLoad) : jar包,加载位置base类加载器
自动启动热部署
1.
2.新版本idea,这个设置在Settings中的Advanced Settings中,勾选Allow auto-make to...
热部署范围配置
自定义不参与重启排除项
spring:
devtools:
restart:
exclude: application.yml,statis/**
关闭热部署
配置高级
@ConfigurationProperties
宽松绑定/松散绑定
宽松绑定不支持@Value引用单个属性的方式
命名导致的报错,出现了,把值全改为小写
常用计量单位绑定
数据效验
<!-- 1.添加JSR303规范坐标与Hibernate校验框架对应坐标-->
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
</dependency>
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
</dependency>
2.开启bean数据校验
进制数据转换规则
1.注意yaml文件中对于数字的定义支持进制书写格式,如需使用字符串
请使用引号明确标注
测试
加载测试专用属性
加载测试专用配置
web环境模拟测试
数据层测试回滚
测试用例数据测试
数据层解决方案
内置数据源
数据源配置
●SpringBoot提供 了3种内嵌的数据源对象供开发者选择
◆HikariCP: 默认内置数据源对象
◆Tomcat提供DataSource: HikariCP不可用的情况下,且在web环境中,将使用tomcat服务器配置的数据源对象
◆Commons DBCP: Hikari不可用,tomcat数据源也不可用,将使用dbcp数据源
数据层解决方案 SQL
1.H2内嵌式数据库启动方式
2.H2数据库线_上运行时请务必关闭
数据层解决方案 noSQL
Redis
●Redis是一款key-value存储结构的内存级NoSQL数据库
◆支持多种数据存储格式
◆支持持久化
◆支持集群
redis下载地址https://github.com/tporadowski/redis/releases
●Redis安装与启动( Windows版)
在下图中输入以下命令
redis-server.exe
在项目中导入redis坐标
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
进行相关配置,其实不配也行,有默认值
spring.redis.host=localhost
spring.redis.port=6379
package com.example.springbootredis;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.ValueOperations;
@SpringBootTest
class SpringbootredisApplicationTests {
@Test
void set(@Autowired RedisTemplate redisTemplate) {
ValueOperations valueOperations = redisTemplate.opsForValue();
valueOperations.set("a","aa");
}
@Test
void get(@Autowired RedisTemplate redisTemplate) {
ValueOperations valueOperations = redisTemplate.opsForValue();
valueOperations.get("a");
}
}
但是,redis与Boot里面操作的,呼应不上(例如,在redis里面存的,在boot里取不出来)
解决方法需要使用 StringRedisTemplata类 (以字符串为单位)就可以了,之前的RedisTemplate是以对象为单位
lettcus与jedis区别
jedis连接Redis服务器 是直连模式,当多线程模式下使用jedis会存在线程安全问题,解决方案可以通过配置连接池使每个连接专用,这样整体性能就大受影响。
lettcus基于Netty框架进行与Redis服务器连接,底层设计中采用StatefulRedisConnection。StatefulRedisConnection自身
是线程安全的,可以保障并发访问安全问题,所以- -个连接可以被多线程复用。当然lettcus也支持多连接实例-起工作。
mongoDB
MongoDB是- -个开源、高性能、无模式的文档型数据库。NoSQL数据库产品中的一一种,是最像关系型数据库的非关系型数据库
可视化客户端--------Robo 3T
ES
es win版 下载地址https://www.elastic.co/cn/downloads/elasticsearch
运行 点击 elsaticsearch.bat
ik分词器 一个插件
将ik分词器放到plugins目录下即可
添加文档
post请求 http://localhost:9200/books/_doc 随机id
post请求 http://ocalhost:9200/books/_doc/1 指定id
post请求 http://ocalhost:9200/books/create/1 指定id
请求体
{
"name":"spring",
"type":"spring",
"description":"spring"
}
查询请求
GET请求 http://ocalhost:9200/books/_doc/1 查询id为1的数据
GET请求 http://ocalhost:9200/books/_search 查询全部
GET请求 http://ocalhost:9200/books/_search?q=name:spring 条件查询
删除
delete请求 http://ocalhost:9200/books/_doc/1
修改
put请求 http://ocalhost:9200/books/_doc/1 全覆盖的修改
{
"name":"spring boot"
}
post请求 http://ocalhost:9200/books/update/1 写什么,修改什么 部分修改
{
"doc":{
"name":"666"
}
}
将es整合进java程序
添加文档
查询文档
缓存
●缓存是 一种介于数据永久存储介质与数据应用之间的数据临时存储介质
●使用缓存可 以有效的减少低速数据读取过程的次数(例如磁盘I0),提高系统性能.
●缓存不仅可以用于提高永久性存储介质的数据读取效率,还可以提供临时的数据存储空间
SpringBoot提供的缓存技术除了提供默认的缓存方案,还可以对其他缓存技术进行整合,统一接口,方便缓存技术的开发与管理
◆Generic
◆JCache
Ehcache
◆Hazelcast
◆Infinispan
◆Couchbase
Redis
◆Caffenine
◆Simple(默认)
memcached
缓存使用案例一手机验证码
●
需求
◆输入手机号获取验证码,组织文档以短信形式发送给用户(页面模拟)
◆
输入手机号和验证码验证结果
●
需求分析
提供controller,传入手机号,业务层通过手机号计算出独有的6位验证码数据,存入缓存后返回此数据
◆提供controller, 传入手机号与验证码,业务层通过手机号从缓存中读取验证码与输入验证码进行比对,返回比对结果
◆Simple(默认)
memcached
jetcache
●jetCache对SpringCache进行了封装,在原有功能基础上实现了多级缓存、缓存统计、自动刷新、异步调用、数据报表等功能
●jetCache设定了本地缓存与远程缓存的多级缓存解决方案
◆本地缓存(local)
LinkedHashMap
Caffeine
◆远程缓存 (remote)
Redis