前言
上文我們做了在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 {@Beanpublic GroupedOpenApi publicApi() {String[] paths = {"/**"};String[] packages = {"com.example.demo.controller"};//掃描的路徑return GroupedOpenApi.builder().group("public").pathsToMatch(paths).packagesToScan(packages).build();}@Beanpublic 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 {@Autowiredprivate 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);}
}
七、效果展示
下篇:《Spring Boot 3.X 下Redis緩存的嘗試(三):精進-用Jason進行序列化》