spring框架及使用-黑马vue+spring项目学习笔记
spring框架及使用-黑马vue+spring项目学习笔记
zs13Spring Validation
spring提供的一个参数校验框架,使用预定义的注解完成参数校验 - 直接写
if语句
数据校验过于繁琐一个参选可能就要写出好几个条件参数一多容易记混写错,同时代码阅读性差
注解 | 作用 |
---|---|
@Pattern | 通过正则表达式校验数据 |
@NotNull | 值不能为Null |
@NotEmpty | 值不能为Null,并且内容不为空 |
满足邮箱格式 | |
@URL | 满足URL格式 |
@Pattern使用步骤
- 引入Spring Validation起步依赖
1 | <!--在maven项目的pom.xml中添加--> |
- 在参数前面添加@Pattern注解
1 | //使用正则表达 5-16个字符 |
- 在Controller类上添加Validated
使用后一些问题的解决
参数校验失败异常处理
- 创建
exception
包存放异常处理类 - 创建全局异常处理类
GlobalExceptionHandler
- 在类上添加
@RestControllerAdvice
注解 - 使用springframework包下的StringUtils的hasLength可以判断e.gemMessage中是否有封装错误信息
- 不想用默认的报错信息也可以选择在@Pattern注解中传入 message参数自定义报错信息
- 样例
1 | @RestControllerAdvice |
使用前效果
使用后效果
@Validated的使用
注解 | 作用 |
---|---|
@NotNull | 值不能为Null |
@NotEmpty | 值不能为Null,并且内容不为空 |
满足邮箱格式 | |
@Validated | 加在方法参数对象前面才可以使数据类中是注解生效 |
分组校验
把校验项进行归类分组,在完成不同的功能的时候校验指定组中的校验项 1.定义分组 2.定义校验项目时指定归属的分组 3.校验时指定要校验的分组
定义分组
假设有有两个分组,分别为Add和Update,则在对应的pojo类中写出这两个名字的接口
1 | //设置分组 |
定义校验项目时指定归属的分组
在要校验的对应属性的注解上添加grups分组
1 | //主键ID |
校验时指定要校验的分组
在要校验的传入值的@Validated
1 |
|
默认分组及分组的继承
如果说某个校验项没有指定分组,默认属于Default分组。 分组之间可以继承,A extends B 那么A中拥有的B中所有的
自定义校验
已有的注解不能满足所有的校验需求,特殊的情况下需要自定义校验(自定义校验注解) 1.自定义注解State 2.自定义校验数据的类StateValidation实现ConstraintValidator接口 3.在需要校验的地方使用自定义校验
自定义注解State
创建注解类State 注解类State中注解的含义
注解 | 作用 |
---|---|
@Documented | 元注解 |
@Target({ElementType.FIELD}) | 元注解 表面注解能用在什么上面 |
@Retention(RetentionPolicy.RUNTIME) | 元注解 用于标注保留到什么阶段 |
@Constraint(validatedBy = {StateValidation.class}) | 指定提供校验规则的类 |
1 | //元注解 |
自定义校验数据的类StateValidation实现ConstraintValidator接口
创建StateValidation并实现ConstraintValidator<给那个注解提供校验规则,校验的数据类型>接口 重写
isValid
方法 如果返回false
就不通过 返回true
通过
1 | public class StateValidation implements ConstraintValidator<State,String> { |
Spring Cache
Spring Cahe 是一个框架,实现了基于注解
的缓存功能,只需要简单的添加一个注解,就能实现缓存功能。 Spring Cache 提供了一层抽象,底层可以切换不同的缓存实现,例如: - EHCache - Caffeine - Redis
1 | <dependency> |
常用注解
注解 | 说明 |
---|---|
@EnableCaching | 开启缓存功能,通常加在启动类上 |
@Cacheable | 在方法执行前先查询缓存中是否有数据,如果有数据,则直接返回缓存结果;如果没有缓存数据,调用方法并将方法返回值放到缓存中 |
@CachePut | 将方法的返回值放到缓存中 |
将一条或多条数据从缓存中删除
@CachePut
Spring EL 表达式是Spring表达式语言,支持在xml和注解中使用表达式,类似于JSP的EL,JSTL表达式语言。Spring开发中我们会经常涉及到调用各种资源的情况,包含普通文件、网址、正则表达式、系统变量、其他Bean的一些属性、配置文件、集合等等,我们就可以使用Spring的表达式语言实现资源的注入。 Spring EL的格式为 #{ SpEL expression } 。Spring表达式主要写在注解 @Value的参数中,它的作用是通过spring把值注入给某个属性。
Spring Task
Spirng Task 介绍
应用场景: - 信用卡每月还款提醒 - 银行贷款每月还款提醒 - 火车售票系统处理未支付订单 - 入职纪念日为用户发送通知
Spring Task入门案例
- 导入Maven坐标Spring-context
- 启动类添加注解@EnableScheduling开启任务调度
- 自定义定时任务类
样例
1 |
|