Spring缓存抽象

【第22章】spring-mvc之缓存 自3.1版本以来,Spring Framework提供了对向现有Spring应用程序透明添加缓存的支持。与事务支持类似,缓存抽象允许在对代码影响最小的情况下一致使用各种缓存解决方案。在SpringFramework4.1中,缓存抽象得到了显著扩展,支持JSR-107注释和更多自定义选项。key你可以使用SpEL(Spring Expression Language)来动态生成缓存键。在@Cacheable@CachePut和注解的key属性中,你可以引用方法参数、方法返回值或其他对象属性。 阅读详情

1、简介:

Spring从3.1开始定义了org.springframework.cache.Cache和org.springframework.cache.CacheManager接口来统一不同的缓存技术;并支持使用Cache(JSR-107)注解简化我们开发;

Cache接口为缓存的组件规范定义,包含缓存的各种操作集合;
Cache接口下Spring提供了各种xxxCache的实现;如RedisCache,EhCacheCache,ConcurrentMapCache等;

每次调用需要缓存功能的方法时,Spring会检查指定参数的指定目标方法是否已经被调用过了;如果有就直接从缓存中获取方法调用后的结果,如果没有就调用方法并缓存结果后返回给用户。下次调用直接从缓存中获取。
使用Spring抽象缓存时我们需要注意:
1、确定方法需要被缓存以及他们的缓存策略
2、从缓存中读取之前缓存存储的数据

2、注解

实现步骤
1、需要在启动类上添加@EnableCaching注解,表示使用Spring抽象缓存

@SpringBootApplication
@EnableCaching
public class SpringBootWebRestfulcrudApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringBootWebRestfulcrudApplication.class, args);
    }

}

2、注解都在service层

@Service
//@CacheConfig(cacheNames = "employee") //定义全局的注解value
public class EmployeeServiceImpl implements EmployeeService {

    @Resource
    EmployeeMapper employeeMapper;

    @Cacheable(cacheNames = {"employee"},key = "'all'")
    @Override
    public List<Employee> findEmployeeAll() {
        System.out.println("开始查询全部");
        return employeeMapper.findEmployeeAll();
    }

    /**
     * @Cacheable:进行缓存
     * @Cacheable的几个属性:
     * cacheNames/value:指定缓存组件的名字;将方法的返回结果放入缓存中,是数组的方式,可以指定多个缓存
     * key:缓存数据使用的key;可以用它来指定。默认是使用方法参数的值
     * keyGenerator:key的生成器;可以自己指定key的生成器的组件id
     * key/keyGenerator二选一使用
     * cacheManager:指定缓存管理器,或者cacheResolver指定获取解析器
     * condition:指定符合条件的情况下才缓存
     * unless:否定缓存,当unless指定的条件为true,方法的换回值就不会被缓存,可以获取到结果进行判断
     * sync:是否使用异步模式
     * @return
     */
     //如果需要自定义key格式为 key = "'名称'"
    @Cacheable(cacheNames = {"employee"},key = "#employeeId")
    @Override
    public Employee findEmployeeId(Integer employeeId) {
        System.out.println("------开始缓存-------");
        return employeeMapper.findEmployeeId(employeeId);
    }

    /**
     * @CachePut:既调用方法也更新缓存数据
     * 原理:先更新内容,然后把结果更新缓存
     * 要指定好key
     * @param employee
     * @return
     */
    @CachePut(value = "employee",key = "#employee.employeeId")
    @Override
    public Employee updateEmployee(Employee employee) {
        employeeMapper.updateEmployee(employee);
        return employee;
    }

    /**
     * 缓存清除
     * key:指定要清除的数据
     * allEntries = true:指定清除这个缓存中的所有数据
     * beforeInvocation = false:缓存的清除是否在方法之前执行
     * @param employeeId
     * @return
     */
    @CacheEvict(value = "employee",key="'all'")
    @Override
    public int deleteEmployee(Integer employeeId) {
        return employeeMapper.deleteEmployee(employeeId);
    }

    /**
     * 组合注解:定义复杂类型
     * @Caching(
     *             cacheable = {@Cacheable(cacheNames = {"employee"},key = "#employeeId")},
     *             put = {
     *                     @CachePut(value = "employee",key = "#employee.employeeId"),
     *                     @CachePut(value = "employee",key = "#employee.employeeId")
     *     })
     */

}
Spring 缓存抽象示例详解 Spring框架自身并没有实现缓存解决方案,但是从3.1开始定义了org.springframework.cache.Cache和org.springframework.cache.CacheManager接口,提供对缓存功能的声明,能够与多种流行的缓存实现集成。这篇文章主要介绍了Spring 缓存抽象 ,需要的朋友可以参考下 立即下载

相关推荐

银河麒麟系统V10 sp1,安装wine 9.0

银河麒麟系统V10 sp1 x86_64,安装wine 9.0

daqinzl的专栏 1万+

SpringBoot之缓存篇

SpringBoot缓存

ToBeMaybe_的博客 1万+

AFSim 2.9实战指南:从入门到精通的中文教程

本文是AFSim 2.9的实战指南,提供从零开始的中文教程。内容涵盖仿真环境搭建、实体行为控制、脚本编写,到传感器、武器系统集成与复杂想定构建,最后讲解数据记录与结果分析方法,帮助用户快速掌握这一强大的军事仿真框架。

weixin_29281941的博客 943

Spring缓存抽象机制

缓存抽象机制Spring

m0_73889530的博客 963

气象大模型光伏功率预测中的应用:从短期,超短期,中长期的实现与开源代码详解

本文详细介绍了基于大模型的光伏功率预测方法,涵盖超短期(15分钟-1小时)、短期(1-6小时)和中长期(1天-1周)预测。文章首先讨论了数据准备与预处理,包括历史功率、气象、天文和电站特性数据的收集与特征工程。随后,针对不同预测需求,提出了多种深度学习模型:超短期预测采用1DCNN-LSTM混合模型,短期预测使用Transformer模型,中长期预测则通过多尺度特征提取模型和概率预测方法处理不确定性。文章还提供了模型训练、评估、部署和优化的完整流程,并开源了代码实现。未来研究方向包括结合数值天气预报、开发时

专注AI大模型,软件混淆,授权 1569

BES2300x笔记(36) -- OTA升级

哈喽大家好,这是该系列博文的第三十六篇~ 篇~ <<【系列博文索引】快速通道 >> 一、前言 BES 蓝牙方案自带 OTA(Over The Air)功能,该功能可以对蓝牙固件进行在线升级,目前该功能支持通过安卓手机(苹果手机也有对应APP,未实际测试)对蓝牙固件进行升级,以后还会支持通过 PC 端进行在线升级。在使用 OTA 功能之前,用户需安装 BES 提供的手机 apk 软件,将需要升级的固件拷贝到手机,然后通过该 apk 软件进行在线升级。

文化人的博客 5356

Spring-5-精品翻译:缓存抽象(Cache-Abstraction)

32.1 介绍 Spring 框架从 3.1 开始,对 Spring 应用程序提供了透明式添加缓存的支持。和事务支持一样,抽象缓存允许一致地使用各种缓存解决方案,并对代码的影响最小。 从 4.1 版本开始,缓存抽象支持了 JSR-107 注释和更多自定义选项,从而得到了显著的改进。 32.2 缓存抽象 缓存(Cache) vs 缓冲区(Buffer) 缓存和缓冲区两个术语往往可以互换着使用。但注...

程序员泥瓦匠 1577

QCC304x系列开发教程(基础篇)之2.1-QCC3040之开发环境搭建

一、安装MDE 1.解压qualcomm_mde.win.2.4_installer_2.4.1.4压缩包,安装MDE_WIN_2.4.1.4_x64.exe,路径自定义 点击NEXT, 安装完成后,点击Finish. 完成安装后,桌面生成快捷方式

心跳包的博客 6077

Spring的缓存抽象

缓存抽象定义 Spring从3.1开始定义了org.springframework.cache.Cache 和org.springframework.cache.CacheManager接口来统一不同的缓存技术;并支持使用Java Caching(JSR-107)注解简化我们进行缓存开发。 Spring Cache 只负责维护抽象层,具体的实现由自己的技术选型来决定。将缓存处理和缓存技术 解除耦合。 每次调用需要缓存功能的方法时,Spring会检查指定参数的指定的目标方法是否已经被调用过,如 果有就直接从缓

dingchengyu的博客 276

Qt/C++ 音视频开发: 共享解码线程/重复利用解码/极低CPU占用/画面同步/进度同步

通过共享解码线程和重复利用解码技术,可以显著降低CPU占用,提高多媒体应用的性能。同时,画面和进度同步技术保证了视频播放过程的平滑体验。

走向CTO的路上... 986

【无人机基站】基于K-mean算法实现无人机基站部署附matlab代码

【无人机基站】基于K-mean算法实现无人机基站部署附matlab代码

天天酷科研的博客 241

缓存-Spring缓存抽象

缓存-Spring缓存抽象Spring缓存抽象简介几个重要概念&缓存注解 Spring缓存抽象简介 Spring从3.1开始定义了org.springframework.cache.Cache和org.springframework.cache.CacheManager接口来统一不同的缓存技术;并支持使用JCache(JSR-107)注解简化我们开发。 Cache接口为缓存的组件规范定义,包含缓存的各种操作集合; Cache接口下Spring提供了各种xxxCache的实现;如RedisCache

qq_41911570的博客 369

6、基于深度强化学习的无人机路径规划

本文研究了基于深度强化学习的无人机路径规划方法,提出了一种融合改进DQN算法与人工势场法的路径规划策略。通过设计合理的网络结构、状态空间、动作空间和奖励函数,结合ε-贪心策略进行动作选择,实现了无人机在复杂环境中的自主避障与目标导向飞行。仿真实验表明,该方法具有收敛速度快、实时性强和可操作性高等优点,能有效完成室内环境下的路径规划任务。文章还总结了算法优势,并对未来在连续动作、复杂环境适应及多无人机协同等方面的发展方向进行了展望。

web39explorer的博客 166

解释Spring中的缓存抽象

Spring框架提供了一个缓存抽象层,使得开发者能够透明地向应用添加缓存支持。这个抽象层通过定义一些注解和接口,简化了在不同的缓存技术之间进行切换的过程。开发者不必直接与底层缓存实现(如 Ehcache、Hazelcast、Redis 等)耦合,而是使用Spring的缓存抽象进行交互。

java永无止境! 614

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

SpringBoot使用spring缓存抽象

Spring缓存抽象的简单介绍 Spring从3.1开始定义了org.springframework.cache.Cache 和org.springframework.cache.CacheManager接口来统一不同的缓存技术; 并支持使用JCache(JSR-107)注解简化我们开发。 Spring缓存抽象和Redis缓存的关系 首先,他们之间没有必然的联系,他们都是一种缓存技术。使用他们都可以进行缓存操作。 首先引入对应的缓存starter <dependency>

qq_43878600的博客 290

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Spring 缓存抽象

Spring缓存抽象概述 Spring框架自身并没有实现缓存解决方案,但是从3.1开始定义了org.springframework.cache.Cache和org.springframework.cache.CacheManager接口,提供对缓存功能的声明,能够与多种流行的缓存实现集成。 Cache接口为缓存的组件规范定义,包含缓存的各种操作集合; Cache接口下Spring提供了各种xxxCache的实现:如RedisCache,EhCacheCache , ConcurrentMapCache等;

baidu_41459912的博客 153

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

解析 Spring 的缓存抽象(@Cacheable)实现

Spring 的缓存抽象通过@Cacheable等注解,大大简化了缓存使用,提高了应用性能和开发效率。理解其实现原理和使用技巧,能帮助开发者更好地利用缓存优化系统,应对高并发和复杂业务场景。

潜意识Java的博客 822

Spring 的缓存抽象

https://docs.spring.io/spring/docs/5.0.13.RELEASE/spring-framework-reference/integration.html#cache 从3.1版开始,Spring Framework提供了对现有Spring应用程序透明地添加缓存的支持。 与事务支持类似,缓存抽象允许一致地使用各种缓存解决方案,而对代码的影响最小。 从Spring...

盲目的拾荒者的博客 891

spring缓存抽象

spring缓存抽象 为不同的缓存提供抽象 接口 cache cacheManager 基于注解的缓存 EnableCaching @Cacheable @CacheEvict @CachePut @Caching @CacheConfig

weixin_42744173的博客 180

了解Spring的缓存抽象

Spring的缓存抽象 为 Java 方法增加缓存,缓存执行结果 当第一次调用完该方法之后,Spring会把执行的结果缓存起来,当下一次再次调用的时候,直接取缓存里面的数据 支持ConcurrentMap、EhCache、Caffeine、JCache(JSR-107)、Redis Ehcache直接在jvm虚拟机中缓存,速度快,效率高;但是缓存共享麻烦,集群分布式应用不方便 JCACHE是一种即...

weixin_43790623的博客 226

Spring启动和缓存抽象

缓存是大多数应用程序的主要组成部分,只要我们设法避免磁盘访问,缓存就会保持强劲。 Spring对各种配置的缓存提供了强大的支持 。 您可以根据需要简单地开始,然后进行更多可定制的操作。 这将是spring提供的最简单的缓存形式的示例。 Spring默认带有一个内存缓存,它很容易设置。 让我们从gradle文件开始。 group 'com.gkatzioura' version '...

最佳 Java 编程 194

深入解析Spring缓存抽象:从@Cacheable注解到实现原理

在当今高并发的应用开发中,缓存技术已成为提升系统性能的关键手段。Spring框架从3.1版本开始引入了一套完善的缓存抽象机制,通过声明式注解的方式,让开发者能够以最小的代码侵入性为应用程序添加透明的缓存支持。这套抽象层屏蔽了底层不同缓存实现(如EhCache、Caffeine、Redis等)的差异,提供了统一的编程模型。Spring允许开发者通过实现接口创建完全自定义的策略。@Overrideif (isHotKey(name)) { // 热点检测逻辑// 其他实现方法...

zuiyuelong的博客 2151

Spring缓存篇之Spring抽象缓存实战

一,前言 本篇会从两个缓存讲起,分别是JSR-107缓存,Spring抽象缓存; 二,什么是JSR-107缓存 JSR是java Specification Requests的缩写,意思是Java 规范提案(2012年10月26日发布),JCache Api的首个早期提案,此次提案主要有哪些规范呢? 定义了一种对java对象临时在内存中进行缓存的方法,一种对java对象临时在内存中进行缓存的方法...

m0_37510446的博客 329

spring的缓存抽象

文章目录spring的缓存抽象支持接口基于注解的缓存 spring的缓存抽象 支持 ConcurrentMap、EhCache、Caffeine、JCache 接口 org.springframework.cache.Cache org.springframework.cache.CacheManager 基于注解的缓存 @EnableCaching 开启缓存注解 @Cacheable 从缓存中查找,没有时从数据库查出放入缓存 @CacheEvict 缓存清理 @CachePut 不管执行情况,直接做缓存

借物小人的博客 331

聊聊Spring Cache的缓存抽象与JSR107缓存抽象JCache,并使用API方式使用Spring Cache【享学Spring】

前言 缓存(Cache)是计算机领域一个极其重要的概念,它是提高硬件(比如CPU)、软件运行效率非常有效的一个手段,它的最大特点就是:快。 缓存就是数据交换的缓冲区(称作:Cache),当某一硬件要读取数据时,会首先从缓存汇总查询数据,有则直接执行返回即可。它被运用在计算机领域的各个方面,介绍如下: 操作系统磁盘缓存 ——> 减少磁盘机械操作 Web服务器缓存——>减少应用服务器请求...

架构师:通透,才能写出好代码! 2844
上一篇: @CurrentUser获取当前登录用户信息
下一篇: RabbitMQ入门
与黑夜为伍
博客等级 码龄7年 19粉丝 80原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值