前言
上文我们做了在Spring Boot下对Redis的基本操作,如果频繁对Redis进行操作而写对应的方法显示使用注释更会更高效;
比如:
依之前操作对一个业务进行定入缓存需要把数据拉取到后再定入;
而今天我们可以通过注释的方式不需要额外代码去实现对Redis的操作。
推荐在读本文之前先看一下上一篇《》
一、加入依赖
Swagger 3.0
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
<version>2.3.0</version>
</dependency>
spring-boot-starter-cache 缓存
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
</dependency>
二、开启缓存
@SpringBootApplication
@EnableCaching
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
三、Swagger配置
import io.swagger.v3.oas.models.ExternalDocumentation;
import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Info;
import org.springdoc.core.models.GroupedOpenApi;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class SwaggerConfig {
@Bean
public GroupedOpenApi publicApi() {
String[] paths = {"/**"};
String[] packages = {"com.example.demo.controller"};//扫描的路径
return GroupedOpenApi.builder()
.group("public")
.pathsToMatch(paths)
.packagesToScan(packages)
.build();
}
@Bean
public OpenAPI openAPI() {
return new OpenAPI()
.info(new Info()
.title("接口文档标题")
.description("SpringBoot3 集成 Swagger3接口文档")
.version("v1"))
.externalDocs(new ExternalDocumentation()
.description("项目API文档")
.url("/"));
}
}
四、实体类
import lombok.Data;
import java.io.Serializable;
@Data
public class Stu implements Serializable{
//private static final long serialVersionUID = 1L;
private Integer id;
private String name;
private Integer age;
}
五、服务类 注解实现
import com.example.demo.mode.Stu;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.CachePut;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;
@Service
public class RedisService {
//----通过注释实现Redis的写入
@Cacheable (cacheNames = "abc",unless = "#result==null",key = "#id")
public Stu getStuById(Integer id) {
Stu stu = new Stu();
stu.setId(id);
stu.setName("张三");
stu.setAge(18);
return stu;
}
//---- 通过注释实现Redis的更新
@CachePut (cacheNames = "abc",key = "#result.id")
public Stu update(Stu stu) {
stu.setName("李四");
stu.setAge(19);
return stu;
}
//---- 通过注释实现Redis的删除
@CacheEvict (cacheNames = "abc",key = "#id")
public void delete(Integer id){
}
}
六、控制层测试
@RestController
@Tag(name = "TestController",description = "测试接口")
@RequestMapping(value = "/swaggertest")
public class StuController {
@Autowired
private RedisService redisService;
@GetMapping("/getStuById")
public Stu getStuById(Integer id){
return redisService.getStuById(id);
}
@GetMapping("/update")
public Stu update(Stu stu){
return redisService.update(stu);
}
@DeleteMapping ("/delete")
public void delete(Integer id){
redisService.delete(id);
}
}