springboot 配置Ehcache

Ehcache的基本配置说明我就不说了.小编记录一下在springboot中使用Ehcache的使用方法.

第一步:在classpath下引入配置文件ehcache.xml

代码如下:

<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:noNamespaceSchemaLocation="ehcache.xsd">
    <cache name="demo"
           maxEntriesLocalHeap="200"
           timeToLiveSeconds="600">
    </cache>
</ehcache> 

第二步springboot开启对缓存的支持,你需要在springboot启动的main方法上配置@EnableCaching注解即可

第三步就是代码使用demo了.代码如下:

首先我们建一个实体类:

public class Thing {

    private Long id;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

}

然后我们注入一个service,模拟数据crud

@Service
public class CacheDemoServiceImpl {

    private static Map<Long, Thing> data = new HashMap<>();//用与缓存模拟数据

    /**
     * 缓存的key
     */
    public static final String THING_ALL_KEY = "\"thing_all\"";
    /**
     * value属性表示使用哪个缓存策略,缓存策略在ehcache.xml
     */
    public static final String DEMO_CACHE_NAME = "demo";

    @CacheEvict(value = DEMO_CACHE_NAME, key = THING_ALL_KEY)
    public void create(Thing thing) {
        thing.setId(thing.getId());
        data.put(thing.getId(), thing);
    }

    @Cacheable(value = DEMO_CACHE_NAME, key = "#thing.id")
    public Thing findById(Thing thing) {
        Long id=thing.getId();
        System.err.println("没有走缓存!" + id);
        return data.get(id);
    }

    @Cacheable(value = DEMO_CACHE_NAME, key = THING_ALL_KEY)
    public List<Thing> findAll() {
        return Lists.newArrayList(data.values());
    }

    @CachePut(value = DEMO_CACHE_NAME, key = "#thing.id")
    @CacheEvict(value = DEMO_CACHE_NAME, key = THING_ALL_KEY)
    public Thing update(Thing thing) {
        System.out.println(thing);
        data.put(thing.getId(), thing);
        return thing;
    }

    @CacheEvict(value = DEMO_CACHE_NAME)
    public void delete(Long id) {
        data.remove(id);
    }

}

最后我们建立一个控制层来访问数据做测试:

    @Autowired
    private CacheDemoServiceImpl cacheDemoServiceImpl;

    @RequestMapping("/test/add")
    public void test(@NotNull Long id) {
        Thing t=new Thing();
        t.setId(id);
        cacheDemoServiceImpl.create(t);

    }

    @RequestMapping("/test/list")
    public JsonResult testlist() {
        List<Thing> list=cacheDemoServiceImpl.findAll();
        return result(200,"",list);
    }

    @RequestMapping("/test/one")
    public JsonResult testfind(@NotNull Long id) {
        Thing t=new Thing();
        t.setId(id);
        Thing tt=cacheDemoServiceImpl.findById(t);
        return result(200,"测试缓存",tt);

    }

    @RequestMapping("/test/delete")
    public void testdelete(@NotNull Long id) {
        cacheDemoServiceImpl.delete(id);

    }

先执行/test/add, 然后/test/list,其次/test/one,你最后会发现的/test/one 当参数传入相同的时候时,数据是从缓存中拿了.

付:下面是springboot不要Ehcache配置文件的注入方法:

import org.springframework.cache.CacheManager;
import org.springframework.cache.annotation.CachingConfigurer;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.cache.ehcache.EhCacheCacheManager;
import org.springframework.cache.interceptor.CacheErrorHandler;
import org.springframework.cache.interceptor.CacheResolver;
import org.springframework.cache.interceptor.KeyGenerator;
import org.springframework.cache.interceptor.SimpleKeyGenerator;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import net.sf.ehcache.config.CacheConfiguration;

@Configuration
@EnableCaching
public class CachingConfiguration implements CachingConfigurer {
    @Bean(destroyMethod="shutdown")
    public net.sf.ehcache.CacheManager ehCacheManager() {
        CacheConfiguration cacheConfiguration = new CacheConfiguration();
        cacheConfiguration.setName("demo");
        cacheConfiguration.setMemoryStoreEvictionPolicy("LRU");
        cacheConfiguration.setMaxEntriesLocalHeap(1000);
        net.sf.ehcache.config.Configuration config = new net.sf.ehcache.config.Configuration();
        config.addCache(cacheConfiguration);
        return net.sf.ehcache.CacheManager.newInstance(config);
    }

    @Bean
    @Override
    public CacheManager cacheManager() {
        return new EhCacheCacheManager(ehCacheManager());
    }

    @Bean
    @Override
    public KeyGenerator keyGenerator() {
        return new SimpleKeyGenerator();
    }

    @Override
    public CacheResolver cacheResolver() {

        return null;
    }

    @Override
    public CacheErrorHandler errorHandler() {
        return null;
    }

}

每天就进步一点点就可以了...不要想太多

参考:http://www.cnblogs.com/lic309/p/4072848.html

时间: 2024-12-16 19:57:49

springboot 配置Ehcache的相关文章

spring-boot+mybatis+ehcache实现快速查询

项目中需要用到一些查询,数据的修改很少但查询度很大.有时还是按频率查询的.  无论如何缓存都是针对查询远远大于更新和插入的情况 mybatis 有自带的缓存,一级缓存是session级别,二级缓存是namespace . 开启二级缓的缺点:1)只有在一个namespace操作单表时使用,比如:user,和user_role两张表,如果user_role修改了,利用user的namespace去查询的结果就是脏数据. 2)在更新其中一条的时候,整个namespace都会被刷新.我们其实知道只要刷新

SpringBoot配置属性之NOSQL

SpringBoot配置属性系列 SpringBoot配置属性之MVC SpringBoot配置属性之Server SpringBoot配置属性之DataSource SpringBoot配置属性之NOSQL SpringBoot配置属性之MQ SpringBoot配置属性之Security SpringBoot配置属性之Migration SpringBoot配置属性之其他 另外附上个人关于springboot的一些文章 SpringBoot前世今生 SpringBoot集成mybatis S

spring boot学习(十三)SpringBoot缓存(EhCache 2.x 篇)

SpringBoot 缓存(EhCache 2.x 篇) SpringBoot 缓存 在 Spring Boot中,通过@EnableCaching注解自动化配置合适的缓存管理器(CacheManager),Spring Boot根据下面的顺序去侦测缓存提供者: * Generic * JCache (JSR-107) * EhCache 2.x * Hazelcast * Infinispan * Redis * Guava * Simple 关于 Spring Boot 的缓存机制: 高速缓

Springboot整合ehcache缓存

EhCache是一个比较成熟的Java缓存框架,最早从hibernate发展而来, 是进程中的缓存系统,它提供了用内存,磁盘文件存储,以及分布式存储方式等多种灵活的cache管理方案,快速简单. Springboot对ehcache的使用非常支持,所以在Springboot中只需做些配置就可使用,且使用方式也简易. 在你的项目上配置以下几步即可使用 首先,老规矩,pom.xml加依赖; <!-- Spring Boot 缓存支持启动器 --> <dependency> <gr

Springcloud 中 SpringBoot 配置全集 (收藏版)

Springcloud 中 SpringBoot 配置全集 (收藏版) 疯狂创客圈 Java 高并发[ 亿级流量聊天室实战]实战系列 [博客园总入口 ] 前言 疯狂创客圈(笔者尼恩创建的高并发研习社群)Springcloud 高并发系列文章,将为大家介绍三个版本的 高并发秒杀: 一.版本1 :springcloud + zookeeper 秒杀 二.版本2 :springcloud + redis 分布式锁秒杀 三.版本3 :springcloud + Nginx + Lua 高性能版本秒杀 以

SpringBoot配置详解

SpringBoot配置详解 SpringBoot自动化配置 在上一节中我们使用Spring Boot实现了一个简单的RESTful API应用,在实现过程中,除了Maven的pom文件的一些配置,我们没有做任何其他的配置,这就是Spring Boot的自动化配置带来的好处,但是,我们还需要了解如何在Spring Boot中修改这些自动化配置的内容,以应对一些特殊的场景需求. 配置文件—Spring Boot支持YAML配置文件和properties配置文件 Spring Boot的默认配置文件

快速配置Ehcache

1. 编写ehcache.xml文件,将该文件放置于classpath路径下.代码如下: <?xml version="1.0" encoding="UTF-8"?><ehcache> <!-- 缓存文件生成之后所放置的路径 -->    <diskStore path="D:/Develop/tomcat-6.0.18/temp/cache" />    <!-- maxElementsIn

SpringBoot配置属性之MQ

SpringBoot配置属性系列 SpringBoot配置属性之MVC SpringBoot配置属性之Server SpringBoot配置属性之DataSource SpringBoot配置属性之NOSQL SpringBoot配置属性之MQ SpringBoot配置属性之Security SpringBoot配置属性之Migration SpringBoot配置属性之其他 另外附上个人关于springboot的一些文章 SpringBoot前世今生 SpringBoot集成mybatis S

SpringBoot配置属性之其他

SpringBoot配置属性系列 SpringBoot配置属性之MVC SpringBoot配置属性之Server SpringBoot配置属性之DataSource SpringBoot配置属性之NOSQL SpringBoot配置属性之MQ SpringBoot配置属性之Security SpringBoot配置属性之Migration SpringBoot配置属性之其他 另外附上个人关于springboot的一些文章 SpringBoot前世今生 SpringBoot集成mybatis S