SpringBoot之开发实用篇

目录

热部署

手动启动热部署

自动启动热部署

热部署范围配置

关闭热部署

 配置高级

@ConfigurationProperties

宽松绑定/松散绑定

常用计量单位绑定

数据效验

进制数据转换规则

测试

加载测试专用属性

加载测试专用配置

web环境模拟测试

数据层测试回滚

测试用例数据测试

数据层解决方案

内置数据源

数据源配置

数据层解决方案  SQL

数据层解决方案  noSQL

Redis

 mongoDB

ES 

将es整合进java程序

添加文档

缓存

缓存使用案例一手机验证码

 jetcache


热部署

手动启动热部署

添加坐标

        <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

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值