文档章节

SpringBoot简单使用ehcache

暗中观察
 暗中观察
发布于 06/25 23:02
字数 632
阅读 72
收藏 5

1,SpringBoot版本

2.0.3.RELEASE

①,pom.xml

<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.0.3.RELEASE</version>
		<relativePath /> <!-- lookup parent from repository -->
	</parent>

	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-cache</artifactId>
		</dependency>

		<dependency>
			<groupId>net.sf.ehcache</groupId>
			<artifactId>ehcache</artifactId>
		</dependency>
	</dependencies>

②,application.properties

spring.cache.ehcache.config=classpath:/ehcache.xml

③,启用缓存注解

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cache.annotation.EnableCaching;

@SpringBootApplication
//启用缓存注解
@EnableCaching
public class SpringbootEhcacheApplication {

	public static void main(String[] args) {
		SpringApplication.run(SpringbootEhcacheApplication.class, args);
	}
}

④,springboot为我们注入的缓存先关类

@Configuration
@ConditionalOnClass({ Cache.class, EhCacheCacheManager.class })
@ConditionalOnMissingBean(org.springframework.cache.CacheManager.class)
@Conditional({ CacheCondition.class,
		EhCacheCacheConfiguration.ConfigAvailableCondition.class })
class EhCacheCacheConfiguration {

	private final CacheProperties cacheProperties;

	private final CacheManagerCustomizers customizers;

	EhCacheCacheConfiguration(CacheProperties cacheProperties,
			CacheManagerCustomizers customizers) {
		this.cacheProperties = cacheProperties;
		this.customizers = customizers;
	}
//缓存管理器
	@Bean
	public EhCacheCacheManager cacheManager(CacheManager ehCacheCacheManager) {
		return this.customizers.customize(new EhCacheCacheManager(ehCacheCacheManager));
	}

	@Bean
	@ConditionalOnMissingBean
	public CacheManager ehCacheCacheManager() {
		Resource location = this.cacheProperties
				.resolveConfigLocation(this.cacheProperties.getEhcache().getConfig());
		if (location != null) {
			return EhCacheManagerUtils.buildCacheManager(location);
		}
		return EhCacheManagerUtils.buildCacheManager();
	}


	static class ConfigAvailableCondition extends ResourceCondition {

		ConfigAvailableCondition() {
			super("EhCache", "spring.cache.ehcache.config", "classpath:/ehcache.xml");
		}

	}

}

⑤,类路径下的ehcache.xml

<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd">
    <!--将缓存保存到硬盘的那个位置 -->
   <diskStore path="d:/ehcache/"></diskStore>
   <!-- 
 	<diskStore path="java.io.tmpdir"></diskStore>
 	java.io.tmpdir取值:
 	操作系统不同 这个系统属性所表示的目录也不同
	On Windows: java.io.tmpdir:[C:\Users\liyhu\AppData\Local\Temp\]
	
	On Solaris: java.io.tmpdir:[/var/tmp/]
	
	On Linux: java.io.tmpdir: [/tmp]
	
	On Mac OS X: java.io.tmpdir: [/tmp]
 	 -->

   <!--指定缓存名 -->
    <cache name="home"
           eternal="false"
           maxEntriesLocalHeap="0"
           timeToIdleSeconds="200"
           diskPersistent="true"/>
    <!-- eternal:true表示对象永不过期,此时会忽略timeToIdleSeconds和timeToLiveSeconds属性,默认为false -->
    <!-- maxEntriesLocalHeap:堆内存中最大缓存对象数,0没有限制 -->
    <!-- timeToIdleSeconds: 设定允许对象处于空闲状态的最长时间,以秒为单位。当对象自从最近一次被访问后,
    如果处于空闲状态的时间超过了timeToIdleSeconds属性值,这个对象就会过期,EHCache将把它从缓存中清空。
    只有当eternal属性为false,该属性才有效。如果该属性值为0,则表示对象可以无限期地处于空闲状态 -->
   <!-- diskPersistent:是否在磁盘上持久化。指重启jvm后,数据是否有效。默认为false。 -->
   <!-- memoryStoreEvictionPolicy:如果内存中数据超过内存限制,向磁盘缓存时的策略。默认值LRU,可选FIFO、LFU。-->

    
</ehcache>

2,使用缓存

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.Cache.ValueWrapper;
import org.springframework.cache.annotation.CacheConfig;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.cache.ehcache.EhCacheCacheManager;
import org.springframework.stereotype.Service;

import com.example.demo.bean.Person;

@Service
@CacheConfig(cacheNames = "home")
public class HomeService {
//注入缓存管理器
	@Autowired
	EhCacheCacheManager cacheManager;
//使用注解缓存,key默认为入参
	@Cacheable()
	public String find(Person person) {
		person.getAge();
		System.out.println("service 进来了。。。");
		return "service find====";
	}

//手动使用缓存
	public String get(Integer age) {
//查找指定缓存home
		org.springframework.cache.Cache cache = cacheManager.getCache("home");
//根据key查找是否有缓存该值
		ValueWrapper val = cache.get(age);
		if(val!=null) {
			System.out.println("有缓存。。。");
			return val.get().toString();
		}else {
			System.out.println("没有缓存。。。");
			cache.put(age, age);
			return age.toString();
		}
		

	}

 

© 著作权归作者所有

共有 人打赏支持
暗中观察
粉丝 0
博文 67
码字总数 29049
作品 0
惠州
springboot中使用自定义两级缓存

  工作中用到了springboot的缓存,使用起来挺方便的,直接引入redis或者ehcache这些缓存依赖包和相关缓存的starter依赖包,然后在启动类中加入@EnableCaching注解,然后在需要的地方就可以...

泪o滴
05/23
0
0
SpringBoot注解方式整合Redis--最简单的实例

参考网页 springboot中注解实现集成redis https://blog.csdn.net/a67474506/article/details/52608855 一些SpringBoot相关知识的讲解 SpringBoot开箱即用的体现--本质上是SpringBoot提前做好...

karma123
07/04
0
0
【SpringBoot专题】快速体验

前言 在Spring 4推出来之前,我们的编码是存在一些问题,比如:大量的xml配置存在项目中,配置相当繁琐;整合第三方框架非常麻烦;开发效率和部署效率不高等问题。正是因为这些问题,Spring开...

张丰哲
08/05
0
0
zhys513/scm-springboot

scm-springboot 基于spring boot的统一注解缓存,支持mencached、redis、ehcache的缓存无缝切换。支持单个缓存设置过期时间,灵活的key设置规则,采用fastjson序列化与反序列化,以json串存于...

zhys513
06/28
0
0
恒宇少年/spring-boot-chapter

简书整套文档以及源码解析 专题 专题名称 专题描述 001 Spring Boot 核心技术 讲解SpringBoot一些企业级层面的核心组件 002 Spring Cloud 核心技术 对Spring Cloud核心技术全面讲解 003 Quer...

恒宇少年
04/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

阿里开源的 java 诊断工具—— Arthas

Arthas 是 阿里巴巴最近开源出来的一个针对 java 的工具,主要是针对 java 的问题进行诊断! 一、概述 这个工具可以协助你做下面这些事情: 这个类是从哪个 jar 包加载而来的? 为什么会报各...

xiaomin0322
12分钟前
0
0
去除shell read 读取的最后一个字符

# 读取管道数据cat | while read line; do echo $line # 此时 line包含 \n or \r\ndone# 去除 read 读取的特殊字符line=${line%?} # 去除最后一个字符...

tigerBin
12分钟前
0
0
Qt之listView设置编辑状态

QListView默认是可以编辑的,可以用setEditTrigers设置QListView的条目是否可以编辑,以及如何进入编辑状态。比如: ui->listView->setEditTriggers(QAbstractItemView::DoubleClicked | QAb...

OceanStar
13分钟前
0
0
Linux批量替换

sed -i "s/http://cache.co188.com///image.co188.com/g" grep http:\/\/image.co188.com -rl . *.html sed -i "s/http://cache.co188.com///cache.co188.com/g" grep http:\/\/cache.co188.......

cpaku
22分钟前
0
0
设置plsql永久注册码

填写注册码: Product Code:4t46t6vydkvsxekkvf3fjnpzy5wbuhphqz serial Number:601769 password:xs374ca...

小橙子的曼曼
27分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部