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

J2EE框架技术 第九章 Spring缓存技术

第一节:Spring 缓存技术概述

    Spring 缓存技术是 Spring Framework 提供的一套抽象化的缓存机制,允许开发者通过简单的注解和配置,将缓存逻辑透明地应用到方法调用中。其核心目标是 减少重复计算 和 降低数据库访问压力,提升应用性能,同时保持代码的简洁性。

1)核心特点

    1.声明式缓存:通过注解(如 @Cacheable)声明方法需要缓存,无需侵入业务逻辑。

    2.抽象层设计:支持多种缓存实现(如 Ehcache、Redis、Caffeine 等),通过统一接口切换。

    3.灵活配置:可自定义缓存策略(过期时间、淘汰策略等)和缓存管理器。

2)Spring缓存机制的工作原理

    Spring的缓存机制采用了典型的两层架构,即内核层和扩展层。内核层相当于对缓存本身的一种抽象,抽取了与缓存相关的最核心的操作方法;而扩展层则是基于内核层的抽象,分别集成业界主流的缓存工具,从而对缓存的核心操作方法提供实现方案。

    在Spring缓存中,Cache和CacheManager接口定义了内核层组件,而把两个接口的各种实现类看作扩展组件。Cache接口定义了缓存的基本操作,如获取缓存值、向缓存中放数据、从缓存中移除数据等。而CacheManager接口则用于管理多个Cache实例,提供统一的缓存管理接口。

    Spring通过AOP技术,可以在不改变代码逻辑的情况下,为方法调用添加缓存逻辑。开发者只需通过注解(如@Cacheable、@CachePut、@CacheEvict等)声明方法的缓存行为,Spring即可在方法调用前后自动执行缓存操作。

一、缓存搭建过程:

1、首先导入缓存依赖:

<dependency>    <groupId>net.sf.ehcache</groupId>    <artifactId>ehcache</artifactId>    <version>2.10.9.2</version></dependency>

2、创建ehcache.xml配置文件:

<?xml version="1.0" encoding="GBK" ?>
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://www.ehcache.org/ehcache.xsd http://www.ehcache.org/ehcache.xsd"
         updateCheck="true">
    <diskStore path="java.io.tmpdir"/>
    <!-- 默认的缓存区 -->
    <defaultCache
            maxElementsInMemory="10000"
            eternal="false"
            timeToIdleSeconds="120"
            timeToLiveSeconds="120"
            maxElementsOnDisk="10000000"
            diskExpiryThreadIntervalSeconds="120"
            memoryStoreEvictionPolicy="LRU"/>
    <!-- 自定义名为person的缓存区 -->
    <cache name="person"
           maxElementsInMemory="10000"
           eternal="false"
           overflowToDisk="true"
           timeToIdleSeconds="300"
           timeToLiveSeconds="600"/>
</ehcache>

3、整合spring-mvc.xml配置文件,我们在原有的配置文件基础上进行修改,将ehcache.xml引入:

<!-- spring缓存配置 start:启用缓存注解 -->
    <cache:annotation-driven />
    <!-- 指定在service层使用缓存 -->
    <context:component-scan base-package="service"></context:component-scan>
    <!-- 配置EhCacheCacheManager -->
    <bean id="ehCacheManagerFactory" class="org.springframework.cac
http://www.dtcms.com/a/100053.html

相关文章:

  • C语言pthread库创建线程的案例
  • 前端程序员学习Python的极简入门
  • (undone) MIT6.824 Lecture 02 - RPC and Threads
  • Stable Diffusion LoRA模型训练:图片收集与处理完全攻略
  • 单节点的 OpenStack 一体化部署
  • CentOS8+Nginx环境使用Certbot+Let‘s Encrypt 配置免费ssl证书及自动续期
  • Windows Server2019搭建FTP服务器
  • iOS审核被拒:Missing privacy manifest 第三方库添加隐私声明文件
  • 5G_WiFi_CE_标称带宽/占用带宽
  • SALV无废话教程
  • Python小练习系列 Vol.11:回文数筛选(filter + 字符串反转)
  • AF3 nonensembled_transform_fns函数解读
  • AI日报 - 2025年03月31日
  • Qt WebSockets使用
  • 《非暴力沟通》第七章 “用全身心倾听” 总结
  • 算法每日一练 (23)
  • 深入理解 Windows 进程管理:taskkill 命令详解
  • 《电子武林争霸赛:MOSFET少侠 vs 三极管长老》
  • axios使用
  • 网络空间安全(44)Web实战篇
  • 硬件学习笔记--56 电击防护方式分类介绍
  • 目标检测中COCO评估指标中每个指标的具体含义说明:AP、AR
  • 基于YOLOv8的PCB缺陷检测--补充实验
  • [C++面试] 智能指针面试点(重点)续3
  • 【视觉提示学习】3.28阅读随想
  • 11. STL的使用
  • springBoot统一响应类型3.4版本
  • LlamaIndex实现(基于PDF|CSV文件)RAG检索增强生成:NaiveRAG
  • 量子计算:未来计算技术的革命性突破
  • 【奶茶经济学的符号暴力本质】