SpringBoot - 开发实用篇

开发实用篇

热部署

关于热部署

  • 重启(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属性校验

  1. 添加JSR303规范坐标与Hibernate校验框架对应坐标

<dependency>
     <groupId>javax.validation</groupId>
     <artifactId>validation-api</artifactId>
 </dependency>
 ​
 <dependency>
     <groupId>org.hibernate.validator</groupId>
     <artifactId>hibernate-validator</artifactId>
 </dependency>
  1. 使用@Validated注解启用校验功能

  2. 使用具体校验规则规范数据校验格式

测试

在启动测试环境时,可以通过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数据库

  • 支持多种数据存储格式

  • 支持持久化

  • 支持集群

  1. 导入SpringBoot整合Redis坐标

 <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-data-redis</artifactId>
 </dependency>
  1. 配置Redis[采用默认配置]

  2. 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
  1. 导入Mongodb驱动

 <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-data-mongodb</artifactId>
 </dependency>
  1. 配置客户端

spring:
  data:
   mongodb:
    uri: mongodb://localhost/itheima

未完待续~

Elasticsearch(ES)

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

叫一只啦啦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值