springboot使用ehcache缓存

整合ehcache

本文部分步骤继承于springboot使用cache缓存,如果有不清楚的,请移驾springboot使用cache缓存

ehcache是一种广泛使用的开源Java分布式缓存。主要面向通用缓存,Java EE和轻量级容器。它具有内存和磁盘存储,缓存加载器,缓存扩展,缓存异常处理程序,一个gzip缓存servlet过滤器,支持RESTSOAP api等特点。

  1. 导入依赖
    整合ehcache必须要导入它的依赖。

    net.sf.ehcache
    ehcache


    org.springframework.boot
    spring-boot-starter-cache

  1. yml配置

需要说明的是config:classpath:/ehcache.xml可以不用写,因为默认就是这个路径。但ehcache.xml必须有。

spring:
  cache:
    type: ehcache
    ehcache:
      config: classpath:/config/ehcache.xml
  1. ehcache.xml

resources目录下新建config文件夹,在文件夹中建立ehcache.xml文件。



    
    

    
    

    


  1. 使用缓存
    @CacheConfig(cacheNames={“myCache”})设置ehcache的名称,这个名称必须在ehcache.xml已配置。
import com.example.ehcache.dao.PersonRepository;
import com.example.ehcache.entity.Person;
import com.example.ehcache.service.DemoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.CacheConfig;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.CachePut;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;

/**
 * @author 李振
 * @date 2018/12/27
 *
 */
@Service
@CacheConfig(cacheNames = {"myCache"})
public class DemoServiceImpl implements DemoService {
    @Autowired
    private PersonRepository personRepository;
    /**
     * 注意:如果没有指定key,则方法参数作为key保存到缓存中
     */
    /**
     * @param person
     * @return
     * @CachePut缓存新增的或更新的数据到缓存,其中缓存的名称为people,数据的key是person的id
     */
    @CachePut(key = "#person.id")
    @Override
    public Person save(Person person) {
        Person p = personRepository.save(person);
        System.out.println("为id,key为:" + p.getId() + "数据做了缓存");
        return p;
    }

    /**
     * @param id
     * @CacheEvict从缓存people中删除key为id的数据
     */
    @CacheEvict
    @Override
    public void remove(Integer id) {
        System.out.println("删除了id,key为" + id + "的数据缓存");
        personRepository.delete(id);
    }

    /**
     * @param person
     * @return
     * @Cacheable缓存key为person的id数据到缓存people中
     */
    @Cacheable(key = "#person.id")
    @Override
    public Person findOne(Person person) {
        Person p = personRepository.findOne(person.getId());
        System.out.println("为id,key为:" + p.getId() + "数据做了缓存");
        return p;
    }
}

整合完毕!

别忘了在启动类开启缓存!

源码地址:https://gitee.com/cnovel/demo

springboot使用cache缓存

springboot使用redis-cache缓存

你可能感兴趣的:(springboot使用ehcache缓存)