栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【Java】ehcache | EhCache | 集成缓存EhCache

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【Java】ehcache | EhCache | 集成缓存EhCache

一、说明

        1、maven项目

        2、SpringBoot项目

二、解决方案 1、引入依赖

	net.sf.ehcache
	ehcache
	2.8.3
2、增加配置文件

1)位于resources根目录

2)示例图

3)ehcache.xml




    
    

    

	
	
	
	
	


	
3、增加配置类
package hg.demo.spring.boot.web.ehcache;

import org.springframework.cache.annotation.EnableCaching;
import org.springframework.cache.ehcache.EhCacheCacheManager;
import org.springframework.cache.ehcache.EhCacheManagerFactoryBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.ClassPathResource;

@Configuration
@EnableCaching
public class EhCacheConfig {
	@Bean
	public EhCacheManagerFactoryBean cacheManagerFactoryBean(){
		EhCacheManagerFactoryBean bean = new EhCacheManagerFactoryBean();
		bean.setConfigLocation(new ClassPathResource("ehcache.xml"));
		bean.setShared(true);
		return bean;
	}
	@Bean
    public EhCacheCacheManager ehCacheCacheManager(EhCacheManagerFactoryBean bean){
      return new EhCacheCacheManager(bean.getObject());
    }	
}
 4、封装工具类
package hg.demo.spring.boot.web.ehcache;

import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.ehcache.EhCacheCacheManager;
import org.springframework.stereotype.Component;


@Slf4j
@Component("ehCacheUtils")
public class EhCacheUtils {
    @Autowired
    EhCacheCacheManager ehCacheCacheManager;

    
    public void set(String cacheName, String key, String val) {
        log.info("set(),ehcache-设值,cacheName:{}", cacheName);
        log.info("set(),ehcache-设值,key:{}", key);
        log.info("set(),ehcache-设值,val:{}", val);
        ehCacheCacheManager.getCache(cacheName).put(key, val);
    }

    
    public String get(String cacheName, String key) {
        log.info("get(),ehcache-查询,cacheName:{}", cacheName);
        log.info("get(),ehcache-查询,key:{}", key);
        String val = ehCacheCacheManager.getCache(cacheName).get(key, String.class);
        log.info("get(),ehcache-查询,val:{}", val);
        return val;
    }

    
    public void remove(String cacheName, String key) {
        log.info("remove(),ehcache-删除,cacheName:{}", cacheName);
        log.info("remove(),ehcache-删除,key:{}", key);
        ehCacheCacheManager.getCache(cacheName).evict(key);
    }

    
    public void clear(String cacheName) {
        log.info("remove(),ehcache-清空,cacheName:{}", cacheName);
        ehCacheCacheManager.getCache(cacheName).clear();
    }
}
5、注解方式

1)@Cacheable

作用:在查询时,会先从缓存中获取,若不存在才再发起对数据库的访问。

@Cacheable(value="策略名,配置在ehcache.xml",key="'key_'+#id")

 说明1: key,不支持枚举,支持静态常量

 说明2: #id,即入参变量名,类型可以是对象,调用 【"#id" -> "#bean.name"】

2)@CacheEvict

作用:通常用在删除方法,用来从缓存中移除相应数据

@CacheEvict(value = "策略名,配置在ehcache.xml", key = "")

3)@CachePut

作用:用于数据新增和修改操作上,用于更新缓存。

@CachePut(value = "策略名,配置在ehcache.xml", key = "")
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/324989.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号