魔法值工具类 xxxConstUtils

  1. public class RedisConstants {
  2. public static final String LOGIN_CODE_KEY = "login:code:";
  3. public static final Long LOGIN_CODE_TTL = 2L;
  4. public static final String LOGIN_USER_KEY = "login:token:";
  5. public static final Long LOGIN_USER_TTL = 36000L;
  6. }

DTO

注意**DTO****Model**的区别

  • Model 是领域对象,面向数据表
  • DTO (Data Transfer Object) 一般只封装 UI 需要的信息,可以由几个实体组成,也可以是一个实体的部分信息。



对象存入Redis

由于通常我们用的 SpringDataRedis 用的是 StringRedisTemplate ,所以在存入Redis时需要将对象序列化为 **JSON**字符串。**JSON**-> **String**
可选项有:

  1. <!--hutool-->
  2. <dependency>
  3. <groupId>cn.hutool</groupId>
  4. <artifactId>hutool-all</artifactId>
  5. <version>5.7.17</version>
  6. </dependency>
  1. <dependency>
  2. <groupId>com.alibaba</groupId>
  3. <artifactId>fastjson</artifactId>
  4. <version>1.2.62</version>
  5. </dependency>

扩展对象属性(例如 逻辑缓存对象)

  • 场景:如果我们需要扩展一个对象的属性,在最小侵入性前提下…
    1. @Data
    2. //逻辑缓存对象
    3. public class RedisLogicalExpire {
    4. public LocalDateTime expireTime;
    5. public Object data;
    6. }
    :::danger 使用Hutool的JSONUtil 从上面这个逻辑过期缓存对象 :::

业务逻辑分支语句

业务逻辑中遇到分支,先判断并返回逻辑简单的那一部分,后续再处理复杂逻辑。
1652518244(1).png


自动拆箱空指针风险

  1. //避免自动拆箱空指针风险
  2. return Boolean.TRUE.equals(isGetLock);