魔法值工具类 xxxConstUtils
public class RedisConstants {
public static final String LOGIN_CODE_KEY = "login:code:";
public static final Long LOGIN_CODE_TTL = 2L;
public static final String LOGIN_USER_KEY = "login:token:";
public static final Long LOGIN_USER_TTL = 36000L;
}
DTO
注意**DTO**
和 **Model**
的区别
- Model 是领域对象,面向数据表
- DTO (Data Transfer Object) 一般只封装 UI 需要的信息,可以由几个实体组成,也可以是一个实体的部分信息。
对象存入Redis
由于通常我们用的 SpringDataRedis 用的是 StringRedisTemplate ,所以在存入Redis时需要将对象序列化为 **JSON**
字符串。**JSON**
-> **String**
可选项有:
<!--hutool-->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.7.17</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.62</version>
</dependency>
扩展对象属性(例如 逻辑缓存对象)
- 场景:如果我们需要扩展一个对象的属性,在最小侵入性前提下…
:::danger 使用Hutool的JSONUtil 从上面这个逻辑过期缓存对象 :::@Data
//逻辑缓存对象
public class RedisLogicalExpire {
public LocalDateTime expireTime;
public Object data;
}
业务逻辑分支语句
业务逻辑中遇到分支,先判断并返回逻辑简单的那一部分,后续再处理复杂逻辑。
自动拆箱空指针风险
//避免自动拆箱空指针风险
return Boolean.TRUE.equals(isGetLock);