当前位置: 首页 > news >正文

Springboot 使用缓存cache

Springboot默认配置使用的是 ConcurrentMapCache,它将缓存数据存储在内存中的 ConcurrentHashMap 里
数据仅在应用运行期间存在,重启后丢失

使用方法:

1.main方法增加注解@EnableCache使能cache

package org.example.demo2;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@SpringBootApplication
@RestController
@EnableCaching
public class Demo2Application {@AutowiredTest1 test1;public static void main(String[] args) {SpringApplication.run(Demo2Application.class, args);}@GetMapping("/t1")public String t1() {return test1.test("dsffdsfdfs");}
}

2.写一个

package org.example.demo2;import org.springframework.cache.CacheManager;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.cache.annotation.Caching;
import org.springframework.cache.concurrent.ConcurrentMapCache;
import org.springframework.cache.support.SimpleCacheManager;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.Arrays;
@Component
public class Test1 {@Cacheable("test")public String test(String p0) {System.out.println("test");return "6666";}}

类,加一个方法,在方法上加上注解@Cacheable,这样他就会缓存方法的返回值,缓存后再调用将直接返回!

注意,该类需要交由容器管理,所以在调用处需要使用@Autowire注入

测试

  .   ____          _            __ _ _/\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \\\/  ___)| |_)| | | | | || (_| |  ) ) ) )'  |____| .__|_| |_|_| |_\__, | / / / /=========|_|==============|___/=/_/_/_/:: Spring Boot ::                (v3.5.5)2025-09-16T16:52:34.061+08:00  INFO 19420 --- [demo2] [           main] org.example.demo2.Demo2Application       : Starting Demo2Application using Java 21.0.1 with PID 19420 (F:\java\test1\demo2\target\classes started by FRT in F:\java\test1\demo2)
2025-09-16T16:52:34.066+08:00  INFO 19420 --- [demo2] [           main] org.example.demo2.Demo2Application       : No active profile set, falling back to 1 default profile: "default"
2025-09-16T16:52:36.462+08:00  INFO 19420 --- [demo2] [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port 8080 (http)
2025-09-16T16:52:36.498+08:00  INFO 19420 --- [demo2] [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2025-09-16T16:52:36.499+08:00  INFO 19420 --- [demo2] [           main] o.apache.catalina.core.StandardEngine    : Starting Servlet engine: [Apache Tomcat/10.1.44]
2025-09-16T16:52:36.673+08:00  INFO 19420 --- [demo2] [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2025-09-16T16:52:36.676+08:00  INFO 19420 --- [demo2] [           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 2477 ms
2025-09-16T16:52:37.289+08:00 DEBUG 19420 --- [demo2] [           main] s.w.s.m.m.a.RequestMappingHandlerMapping : 3 mappings in 'requestMappingHandlerMapping'
2025-09-16T16:52:37.476+08:00 DEBUG 19420 --- [demo2] [           main] o.s.w.s.handler.SimpleUrlHandlerMapping  : Patterns [/webjars/**, /**] in 'resourceHandlerMapping'
2025-09-16T16:52:37.526+08:00 DEBUG 19420 --- [demo2] [           main] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
2025-09-16T16:52:37.622+08:00 DEBUG 19420 --- [demo2] [           main] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 0 @ExceptionHandler, 1 ResponseBodyAdvice
2025-09-16T16:52:37.825+08:00  INFO 19420 --- [demo2] [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port 8080 (http) with context path '/'
2025-09-16T16:52:37.844+08:00  INFO 19420 --- [demo2] [           main] org.example.demo2.Demo2Application       : Started Demo2Application in 4.713 seconds (process running for 5.56)
2025-09-16T16:52:41.663+08:00  INFO 19420 --- [demo2] [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring DispatcherServlet 'dispatcherServlet'
2025-09-16T16:52:41.663+08:00  INFO 19420 --- [demo2] [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Initializing Servlet 'dispatcherServlet'
2025-09-16T16:52:41.663+08:00 DEBUG 19420 --- [demo2] [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Detected StandardServletMultipartResolver
2025-09-16T16:52:41.664+08:00 DEBUG 19420 --- [demo2] [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Detected AcceptHeaderLocaleResolver
2025-09-16T16:52:41.664+08:00 DEBUG 19420 --- [demo2] [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Detected FixedThemeResolver
2025-09-16T16:52:41.665+08:00 DEBUG 19420 --- [demo2] [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Detected org.springframework.web.servlet.view.DefaultRequestToViewNameTranslator@befc6f6
2025-09-16T16:52:41.665+08:00 DEBUG 19420 --- [demo2] [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Detected org.springframework.web.servlet.support.SessionFlashMapManager@6a05501d
2025-09-16T16:52:41.666+08:00 DEBUG 19420 --- [demo2] [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : enableLoggingRequestDetails='false': request parameters and headers will be masked to prevent unsafe logging of potentially sensitive data
2025-09-16T16:52:41.666+08:00  INFO 19420 --- [demo2] [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Completed initialization in 3 ms
2025-09-16T16:52:41.685+08:00 DEBUG 19420 --- [demo2] [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : GET "/t1", parameters={}
2025-09-16T16:52:41.717+08:00 DEBUG 19420 --- [demo2] [nio-8080-exec-1] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to org.example.demo2.Demo2Application#t1()
test
2025-09-16T16:52:41.769+08:00 DEBUG 19420 --- [demo2] [nio-8080-exec-1] m.m.a.RequestResponseBodyMethodProcessor : Using 'text/html', given [text/html, application/xhtml+xml, image/avif, image/webp, image/apng, application/xml;q=0.9, */*;q=0.8, application/signed-exchange;v=b3;q=0.7] and supported [text/plain, */*, application/json, application/*+json]
2025-09-16T16:52:41.770+08:00 DEBUG 19420 --- [demo2] [nio-8080-exec-1] m.m.a.RequestResponseBodyMethodProcessor : Writing ["6666"]
2025-09-16T16:52:41.783+08:00 DEBUG 19420 --- [demo2] [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Completed 200 OK
2025-09-16T16:52:42.578+08:00 DEBUG 19420 --- [demo2] [nio-8080-exec-2] o.s.web.servlet.DispatcherServlet        : GET "/t1", parameters={}
2025-09-16T16:52:42.579+08:00 DEBUG 19420 --- [demo2] [nio-8080-exec-2] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to org.example.demo2.Demo2Application#t1()
2025-09-16T16:52:42.584+08:00 DEBUG 19420 --- [demo2] [nio-8080-exec-2] m.m.a.RequestResponseBodyMethodProcessor : Using 'text/html', given [text/html, application/xhtml+xml, image/avif, image/webp, image/apng, application/xml;q=0.9, */*;q=0.8, application/signed-exchange;v=b3;q=0.7] and supported [text/plain, */*, application/json, application/*+json]
2025-09-16T16:52:42.584+08:00 DEBUG 19420 --- [demo2] [nio-8080-exec-2] m.m.a.RequestResponseBodyMethodProcessor : Writing ["6666"]
2025-09-16T16:52:42.585+08:00 DEBUG 19420 --- [demo2] [nio-8080-exec-2] o.s.web.servlet.DispatcherServlet        : Completed 200 OK
2025-09-16T16:52:43.496+08:00 DEBUG 19420 --- [demo2] [nio-8080-exec-3] o.s.web.servlet.DispatcherServlet        : GET "/t1", parameters={}
2025-09-16T16:52:43.497+08:00 DEBUG 19420 --- [demo2] [nio-8080-exec-3] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to org.example.demo2.Demo2Application#t1()
2025-09-16T16:52:43.502+08:00 DEBUG 19420 --- [demo2] [nio-8080-exec-3] m.m.a.RequestResponseBodyMethodProcessor : Using 'text/html', given [text/html, application/xhtml+xml, image/avif, image/webp, image/apng, application/xml;q=0.9, */*;q=0.8, application/signed-exchange;v=b3;q=0.7] and supported [text/plain, */*, application/json, application/*+json]
2025-09-16T16:52:43.503+08:00 DEBUG 19420 --- [demo2] [nio-8080-exec-3] m.m.a.RequestResponseBodyMethodProcessor : Writing ["6666"]
2025-09-16T16:52:43.504+08:00 DEBUG 19420 --- [demo2] [nio-8080-exec-3] o.s.web.servlet.DispatcherServlet        : Completed 200 OK
2025-09-16T16:52:44.238+08:00 DEBUG 19420 --- [demo2] [nio-8080-exec-4] o.s.web.servlet.DispatcherServlet        : GET "/t1", parameters={}
2025-09-16T16:52:44.239+08:00 DEBUG 19420 --- [demo2] [nio-8080-exec-4] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to org.example.demo2.Demo2Application#t1()
2025-09-16T16:52:44.241+08:00 DEBUG 19420 --- [demo2] [nio-8080-exec-4] m.m.a.RequestResponseBodyMethodProcessor : Using 'text/html', given [text/html, application/xhtml+xml, image/avif, image/webp, image/apng, application/xml;q=0.9, */*;q=0.8, application/signed-exchange;v=b3;q=0.7] and supported [text/plain, */*, application/json, application/*+json]
2025-09-16T16:52:44.242+08:00 DEBUG 19420 --- [demo2] [nio-8080-exec-4] m.m.a.RequestResponseBodyMethodProcessor : Writing ["6666"]
2025-09-16T16:52:44.245+08:00 DEBUG 19420 --- [demo2] [nio-8080-exec-4] o.s.web.servlet.DispatcherServlet        : Completed 200 OK

只有第一次调用的时候打印方法里的test,以后再次调用将直接返回,跳过打印test

测试成功!


文章转载自:

http://M7p6H2j3.kgtyj.cn
http://iQIheG1U.kgtyj.cn
http://s9eXCQLJ.kgtyj.cn
http://xBl6zpRF.kgtyj.cn
http://vMAhDQdS.kgtyj.cn
http://qYtzeSEC.kgtyj.cn
http://tgIW1VIg.kgtyj.cn
http://j113TMjd.kgtyj.cn
http://Ge99xZOU.kgtyj.cn
http://yIHav8Kg.kgtyj.cn
http://TZuKikWK.kgtyj.cn
http://lp00ojpI.kgtyj.cn
http://pf2BdLlN.kgtyj.cn
http://lVS1mqHt.kgtyj.cn
http://s0cYgBaZ.kgtyj.cn
http://0chyC7K8.kgtyj.cn
http://6ggelNCj.kgtyj.cn
http://zkPFqLPu.kgtyj.cn
http://8gvO4Son.kgtyj.cn
http://J8BuPj2u.kgtyj.cn
http://yOAFntXg.kgtyj.cn
http://GAOvhUTZ.kgtyj.cn
http://HiU5JRWa.kgtyj.cn
http://LRBMaExe.kgtyj.cn
http://M4ltvpWz.kgtyj.cn
http://jv8OeNUD.kgtyj.cn
http://dXa9htZf.kgtyj.cn
http://F7CAQx59.kgtyj.cn
http://KyiIQg7z.kgtyj.cn
http://0vc1snFq.kgtyj.cn
http://www.dtcms.com/a/386763.html

相关文章:

  • 基于边缘计算的智能管控终端充电站有序充电系统设计与实现 —— 面向实时功率调度需求
  • Nordic BLE智能门锁应用
  • IDEA 连接MySQL数据导出和导入指南
  • 在window下使用visual studio + cmake gui 源码编译 gRPC
  • C# halcon 拼图例子
  • 网络:常见的高速网卡(100Gbps和400Gbps)
  • 第十四届蓝桥杯青少组C++选拔赛[2022.12.18]第二部分编程题(4、充电站)
  • 华为P10plus adb 无线调试USB拔除后立即失效解决
  • openharmony 鸿蒙 下 利用蓝牙API(a2dp模块-高级音频,ble模块-低功耗蓝牙等)完成对蓝牙音响的控制(蓝牙广播)
  • 软考-系统架构设计师 需求工程详细讲解
  • 优化 Coze Studio 依赖管理:镜像源配置与高效实践
  • AIGC入门,从理解通信协议sse与streamhttp开始
  • cuda编程笔记(20)-- 混合精度计算
  • 服务器性能测试的性能指标包括哪些?服务器性能测试工具有哪些?
  • 【面试场景题】跨库数据表关联查询怎么处理
  • 无需复杂正则:SLS 新脱敏函数让隐私保护更简单高效
  • [特殊字符]网络安全学习笔记day1——基本概念,包括域名、DNS、脚本语言、后门、WEB、WEB漏洞
  • 使用ZYNQ芯片和LVGL框架实现用户高刷新UI设计系列教程(第三十讲)
  • Langchain4j开发之AI Service
  • 红帽证书需要什么报考条件
  • Ubuntu 虚拟机 | DPDK 协议栈开发 | 2、DPDK驱动绑定VMWare模拟网卡 + Testpmd发包测试
  • 【高等数学】第十二章 无穷级数——第二节 常数项级数的审敛法
  • 从弱 AI 到通用人工智能(AGI):我们还需要跨越哪些技术鸿沟?
  • Redis 在分布式会话管理中的应用:从单体到微服务的平滑迁移
  • 说说你对闭包的理解? 闭包使⽤场景
  • MySQL 存储过程完整实战手册---一篇吃透 Stored Procedure
  • Leetcode 763. 划分字母区间 贪心
  • 嵌入式系统arm高级系统调试技能-25.cat proc/vmallocinfo文件内容解读,内存异常分析
  • 良策金宝AI的技术内核:工程大模型如何破解行业知识壁垒
  • WJCZ(唯诺因)黄金三角抗衰体系的科学机制与作用解析