善用缓存提高你的Spring工程效率

jimisun 2018-11-08 原文

善用缓存提高你的Spring工程效率

欢迎查看Java开发之上帝之眼系列教程,如果您正在为Java后端庞大的体系所困扰,如果您正在为各种繁出不穷的技术和各种框架所迷茫,那么本系列文章将带您窥探Java庞大的体系。本系列教程希望您能站在上帝的角度去观察(了解)Java体系。使Java的各种后端技术在你心中模块化;让你在工作中能将Java各个技术了然于心;能够即插即用。本章我们来一起了解Spring中我们如何使用缓存。

缓存可以存储常用到的信息,每次需要的时候我们都可以从缓存中获取,本章我们一起来进行了解Spring的缓存抽象.尽管Spring没有提供任何的缓存的实现,但是它对缓存功能提供了声明式的支持,能够与多种流行的缓存进行集成

我们一般在Spring项目中使用缓存功能我们需要对Spring项目进行一些相关的配置,流程如下

  1. 启用对缓存的支持
  2. 配置缓存管理器
  3. 应用缓存

启用对缓存的支持

JavaConfig配置启用

@Configuration
@EnableCaching
public class SpringCacheConfig {

}

XML配置启用


    <!--启用缓存-->
    <cache:annotation-driven/>

配置缓存管理器

在Sring中我们可以使用很多的缓存管理器的实现
  • ConcurrentMapCacheManager
  • SimpleCacheManager
  • NoOpCacheManager
  • CompositeCacheManager
  • EhCacheCacheManager
  • RedisCacheManager
  • GemfireCacheManager

JavaConfig配置缓存管理器

    @Bean
    public CacheManager cacheManager() {
        return new ConcurrentMapCacheManager();
    }

XML配置缓存管理器

    <!--声明缓存管理器-->
    <bean id="cacheManager" class="org.springframework.cache.concurrent.ConcurrentMapCacheManager"/>

应用缓存

我们经常在项目中使用注解作用在方法上,使其应用缓存,常见的注解如下

注解 描述
@Cacheable 先查缓存,如果缓存没有调用方法,将返回值放入缓存中
@CachePut 始终都会将返回值放入缓存中
@CacheEvict 在缓存中清除一个或者多个条目
@Caching 分组的注解,能够同时应用多个其他的缓存注解

使用示例:查询缓存

    @Cacheable(value = "UserCache", key = "#root.args[0]")
    User getUser(String username);

使用示例:保存缓存

    @CachePut(value = "UserCache", key = "#result.username")
    User save(User user);

使用示例:移除缓存

    @CacheEvict("UserCache")
    void remove(String username);

本章完整工程实例代码下载地址:完整项目演示工程点击下载

posted on 2018-11-08 14:07 jimisun 阅读() 评论() 编辑 收藏

 

 
版权声明:本文为jimisun原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/jimisun/p/9928719.html

善用缓存提高你的Spring工程效率的更多相关文章

  1. 第四章:Spring框架Bean的三种装配(基础)

    第四章:Spring框架Bean的三种装配(基础) 欢迎查看Java开发之上帝之眼系列教程,如果您正在为Jav […]...

  2. 配置Spring项目上传的两种方式(全解析)

    配置Spring项目上传的两种方式(全解析) 欢迎查看Java开发之上帝之眼系列教程,如果您正在为Java后端 […]...

  3. 重新来认识你的老朋友Spring框架

    重新来认识你的老朋友Spring框架 欢迎查看Java开发之上帝之眼系列教程,如果您正在为Java后端庞大的体 […]...

  4. JAVAORM框架之Mybatis (Ibatis) 详解

    目录 Mybatis基础概念 Mybatis开放方式演进 Mybatis框架核心要点 关联查询 延迟加载(懒加 […]...

  5. Spring项目对JDBC的支持和基本使用

    Spring项目对JDBC的支持和基本使用 欢迎查看Java开发之上帝之眼系列教程,如果您正在为Java后端庞 […]...

  6. JavaORM框架之Mybatis篇(Ibatis)

    JavaORM框架之Mybatis篇(Ibatis) 欢迎查看Java开发之上帝之眼系列教程,如果您正在为Ja […]...

随机推荐

  1. .NET中的值类型与引用类型

    .NET中的值类型与引用类型 这是一个常见面试题,值类型(Value Type)和引用类型(Reference […]...

  2. HTTP Live Streaming直播(iOS直播)技术分析与实现(转)

    HTTP Live Streaming直播(iOS直播)技术分析与实现...

  3. 云服务AppId或AppKey和AppSecret生成策略

    App key和App Secret App key简称API接口验证序号,是用于验证API接入合法性的。接入 […]...

  4. Netty中的ChannelFuture和ChannelPromise

    在Netty使用ChannelFuture和ChannelPromise进行异步操作的处理 这是官方给出的Ch […]...

  5. 盘点关于程序员的10个有趣的段子

    (1)程序员的读书历程:x 语言入门 —> x 语言应用实践 —> x 语言高阶编程 —> […]...

  6. Spring Boot启动过程(六):内嵌Tomcat中StandardHost、StandardContext和StandardWrapper的启动

    内嵌Tomcat中StandardHost、StandardContext和StandardWrapper的启 […]...

  7. Egret入门学习日记 — 第一篇 (引擎的选择)

    Egret入门学习日记 — 第一篇 (引擎的选择) 第一篇 (引擎的选择)   我人比较笨,得慢慢 […]...

  8. 新媒体运营之如此微信养号不易封

     最近,微信的封号力度,越来越大,很多号被莫名其妙的封了。作为运营来说,企业仍在不断地补充号源。   那么,养 […]...

展开目录

目录导航