java springboot 初体验 (四)对接redis
- 上一篇
- java springboot 初体验 (三) 提供一个新接口
- https://www.cnblogs.com/zwjvzwj/p/16599958.html
- pom文件添加依赖包
- 添加redis依赖包
<!-- Spring提供的Redis Client,用于操作Redis的依赖库 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>
- 添加lombok包,和redis没有关系,只是项目用着会更加方便
-
<!-- Lombok是一个可以通过简单的注解的形式来帮助我们简化消除一些必须有但显得很臃肿的 Java 代码的工具。 --> <!-- 常用注解 说明 @Getter/@Setter 此注解在属性或类上,可以为相应的属性自动生成 Getter/Setter 方法,还可以指定访问范围 @ToString 类使用此注解,生成toString()方法 @EqualsAndHashCode 用在类上,生成hashCode()和equals()方法 @Data 注解在类上, 相当于同时使用了@ToString、@EqualsAndHashCode、@Getter、@Setter和@RequiredArgsConstrutor这些注解 @NonNull 用在属性或构造器上,对参数是否为空检查 @NoArgsConstructor 生成无参构造函数 @RequiredArgsConstructor 生成不为空的构造函数 @AllArgsConstructor 生成全参构造函数 @Value 用在类上,是@Data的不可变形式,相当于为属性添加final声明,只提供getter方法,而不提供setter方法 @Builder 表示可以进行生成器模式(Builder Pattern)方式初始化 --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.22</version> </dependency>
-
- 添加redis依赖包
- 配置文件中添加redis配置
-
spring:
profiles:
active: local # 多环境配置参数
application:
name: zwj-project
redis:
host: 127.0.0.1
port: 6379
password: moka@1234
database: 0 #操作的是0号数据库
jedis:
#Redis连接池配置
pool:
max-active: 8 #最大连接数
max-wait: 1ms #连接池最大阻塞等待时间
max-idle: 4 #连接池中的最大空闲连接
min-idle: 0 #连接池中的最小空闲连接
-
- 添加一个util工具类,封装redis的各种方法
-
@Slf4j
@Component
public class StringRedisTemplateUtil {
@Resource
public StringRedisTemplate stringRedisTemplate;
/**
* @apiNote set string to redis
* @param redisKey redisKey
* @param redisValue redisValue
* @param expire expire
*/
public void setString(String redisKey, String redisValue,Long expire) {
try {
// 向redis里存入数据和设置缓存时间
stringRedisTemplate.opsForValue().set(redisKey, redisValue,expire, TimeUnit.SECONDS);
} catch (Exception e) {
log.error("StringRedisTemplateUtil setString catch error msg={}", e.getMessage(), e);
}
}
/**
* @apiNote 根据key获取缓存中的val
* @param redisKey redisKey
* @return redisValue
*/
public String getString(String redisKey) {
try {
return stringRedisTemplate.opsForValue().get(redisKey);
} catch (Exception e) {
log.error("StringRedisTemplateUtil getString catch error msg={}", e.getMessage(), e);
}
return null;
}
}
-
- 使用封装的redis
-
package com.zwj.zwjproject.controller.outer;
import com.zwj.zwjproject.dto.TestApiRespDTO;
import com.zwj.zwjproject.utils.StringRedisTemplateUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
@Slf4j @RestController @RequestMapping(value = "/outer/test") public class TestOuterController { @Resource private StringRedisTemplateUtil stringRedisTemplateUtil; @PostMapping(value = "/testRedis") public TestApiRespDTO testRedis() { try { stringRedisTemplateUtil.setString("a", "第一次redis测试", (long) 3600); String a = stringRedisTemplateUtil.getString("a"); return new TestApiRespDTO() .setCode(0) .setRedisValue(a); } catch (Exception e) { System.out.println("catch error"); log.info("TestOuterController testApi catch error msg={}", e.getMessage(), e); return new TestApiRespDTO() .setCode(-1); } } }
-
-
postman请求
-
-
做一个统一的返回
-
目标
-
成功时:code:0 msg:success
-
失败时:code:-1或者其他
-
- 建一个返回code码枚举类。也可以用其他的方式
-
package com.zwj.zwjproject.enums; /** * @ClassName: RespEnum * @Author zhangwujie * @Date 2022/8/19 2:29 下午 * @Description: */ public enum RespEnum { SUCCESS(0, "success"), FAIL(-1, "fail"); private Integer code; private String msg; RespEnum(Integer code, String msg) { this.code = code; this.msg = msg; } public Integer getCode() { return code; } public String getMsg() { return msg; } }
-
- 封装一个返回值
-
package com.zwj.zwjproject.result; import com.zwj.zwjproject.constant.RespConstant; import com.zwj.zwjproject.enums.RespEnum; import lombok.Data; import java.io.Serializable; /** * @ClassName: RespEntity * @Author zhangwujie * @Date 2022/8/19 11:27 上午 * @Description: */ @Data public class RespEntity<T> implements Serializable { private Integer code; private String msg; private T data; /** * 接口成功 * @param code code * @param msg msg * @param data data * @param <T> <T> * @return RespEntity<T> */ public static <T> RespEntity<T> success(Integer code, String msg, T data) { RespEntity<T> respEntity = new RespEntity<>(); respEntity.setCode(code); respEntity.setMsg(msg); respEntity.setData(data); return respEntity; } /** * 接口成功 * @param msg msg * @param data data * @param <T> <T> * @return RespEntity<T> */ public static <T> RespEntity<T> success(String msg, T data) { RespEntity<T> respEntity = new RespEntity<>(); respEntity.setCode(RespConstant.SUCCESS); respEntity.setMsg(msg); respEntity.setData(data); return respEntity; } /** * 接口成功 * @param msg msg * @return RespEntity<T> */ public static <T> RespEntity<T> success(String msg) { RespEntity<T> respEntity = new RespEntity<>(); respEntity.setCode(RespConstant.SUCCESS); respEntity.setMsg(msg); respEntity.setData(null); return respEntity; } /** * 接口成功 * @param <T> <T> * @return RespEntity<T> */ public static <T> RespEntity<T> success(T data) { RespEntity<T> respEntity = new RespEntity<>(); respEntity.setCode(RespEnum.SUCCESS.getCode()); respEntity.setMsg(RespEnum.SUCCESS.getMsg()); respEntity.setData(data); return respEntity; } /** * 接口成功 * @return RespEntity<T> */ public static <T> RespEntity<T> success() { RespEntity<T> respEntity = new RespEntity<>(); respEntity.setCode(RespEnum.SUCCESS.getCode()); respEntity.setMsg(RespEnum.SUCCESS.getMsg()); respEntity.setData(null); return respEntity; } /** * 接口失败 * @param code code * @param msg msg * @param data data * @param <T> <T> * @return RespEntity<T> */ public static <T> RespEntity<T> fail(Integer code, String msg, T data) { RespEntity<T> respEntity = new RespEntity<>(); respEntity.setCode(code); respEntity.setMsg(msg); respEntity.setData(data); return respEntity; } /** * 接口失败 * @param code code * @param msg msg * @param <T> <T> * @return RespEntity<T> */ public static <T> RespEntity<T> fail(Integer code, String msg) { RespEntity<T> respEntity = new RespEntity<>(); respEntity.setCode(code); respEntity.setMsg(msg); respEntity.setData(null); return respEntity; } /** * 接口失败 * @param msg msg * @return RespEntity<T> */ public static <T> RespEntity<T> fail(String msg) { RespEntity<T> respEntity = new RespEntity<>(); respEntity.setCode(RespEnum.FAIL.getCode()); respEntity.setMsg(msg); respEntity.setData(null); return respEntity; } /** * 接口失败 * @return RespEntity<T> */ public static <T> RespEntity<T> fail() { RespEntity<T> respEntity = new RespEntity<>(); respEntity.setCode(RespEnum.FAIL.getCode()); respEntity.setMsg(RespEnum.FAIL.getMsg()); respEntity.setData(null); return respEntity; } }
-
-
修改获取redis的返回值
-
使用RespEntity.success和RespEntity.fail代表成功和失败
-
@PostMapping(value = "/testRedis") public RespEntity<TestApiRespDTO> testRedis() { try { stringRedisTemplateUtil.setString("a", "第一次redis测试", (long) 3600); String a = stringRedisTemplateUtil.getString("a"); TestApiRespDTO testApiRespDTO = new TestApiRespDTO() .setRedisValue(a); return RespEntity.success(testApiRespDTO); } catch (Exception e) { log.info("TestOuterController testApi catch error msg={}", e.getMessage(), e); return RespEntity.fail(e.getMessage()); } }
-
-
- 下一篇
- java springboot 初体验 (五)对接apollo
- https://www.cnblogs.com/zwjvzwj/p/16600079.html
本文来自博客园,作者:zwjvzwj,转载请注明原文链接:https://www.cnblogs.com/zwjvzwj/p/16600079.html