歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Spring整合ehcache 注解實現查詢緩存,並實現實時緩存更新或刪除

Spring整合ehcache 注解實現查詢緩存,並實現實時緩存更新或刪除

日期:2017/3/1 9:20:50   编辑:Linux編程

寫在前面:上一篇博客寫了spring cache和ehcache的基本介紹,個人建議先把這些最基本的知識了解了才能對今天主題有所感觸。不多說了,開干!

注:引入jar

<!-- 引入ehcache緩存 -->
<dependency>
<groupId>net.sf.ehcache</groupId>
<artifactId>ehcache</artifactId>
<version>2.8.3</version>
</dependency>

第一步:首先配置ehcache.xml

<?xml version="1.0" encoding="UTF-8"?>
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="ehcache.xsd"
updateCheck="true" monitoring="autodetect"
dynamicConfig="true">

<diskStore path="java.io.tmpdir"/>
<defaultCache
maxEntriesLocalHeap="10000"
eternal="false"
overflowToDisk="false"
timeToIdleSeconds="120"
timeToLiveSeconds="120"
diskSpoolBufferSizeMB="30"
maxEntriesLocalDisk="10000000"
diskExpiryThreadIntervalSeconds="120"
memoryStoreEvictionPolicy="LRU">
<persistence strategy="localTempSwap"/>
</defaultCache>

<cache name="myCache"
maxEntriesLocalHeap="10000"
maxEntriesLocalDisk="1000"
eternal="false"
diskSpoolBufferSizeMB="30"
timeToIdleSeconds="300"
timeToLiveSeconds="600"
memoryStoreEvictionPolicy="LFU"
transactionalMode="off">
<persistence strategy="localTempSwap"/>
</cache>
</ehcache>

第二步:在spring.xml的配置文件中引入schema,

xmlns:aop="http://www.springframework.org/schema/aop"和http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache-3.2.xsd

緩存的配置:

<!-- 啟用緩存注解功能,這個是必須的,否則注解不會生效,另外,該注解一定要聲明在spring主配置文件中才會生效 -->
<cache:annotation-driven cache-manager="ehcacheManager"/>

<!-- cacheManager工廠類,指定ehcache.xml的位置 -->
<bean id="ehcacheManagerFactory" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">
<property name="configLocation" value="classpath:ehcache.xml" />
</bean>
<!-- 聲明cacheManager -->
<bean id="ehcacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager">
<property name="cacheManager" ref="ehcacheManagerFactory" />
</bean>

OK!緩存的相關配置已經完成。下面開始編寫測試程序。這裡需要連接數據庫,我就不寫了。這裡為了方便就隨便找了之前寫過的model,這個model就是AOP注解實現日志管理的實體,為了偷懶就直接用了,希望你們不要誤解,沒有特殊意義的

第三步:編寫model,這裡需要注意,要實現緩存的實體必須要序列化 private static final long serialVersionUID = -6579533328390250520L; 關於序列化的生成這裡就不介紹了,大家可以百度看看。

package org.shop.entity;

import java.io.Serializable;
import java.util.Date;

public class SystemLog implements Serializable {

private static final long serialVersionUID = -6579533328390250520L;

private String id;

private String description;

private String method;

private Long logType;

private String requestIp;

private String exceptioncode;

private String exceptionDetail;

private String params;

private String createBy;

private Date createDate;

public String getId() {
return id;
}

public void setId(String id) {
this.id = id == null ? null : id.trim();
}

public String getDescription() {
return description;
}

public void setDescription(String description) {
this.description = description == null ? null : description.trim();
}

public String getMethod() {
return method;
}

public void setMethod(String method) {
this.method = method == null ? null : method.trim();
}

public Long getLogType() {
return logType;
}

public void setLogType(Long logType) {
this.logType = logType;
}

public String getRequestIp() {
return requestIp;
}

public void setRequestIp(String requestIp) {
this.requestIp = requestIp == null ? null : requestIp.trim();
}

public String getExceptioncode() {
return exceptioncode;
}

public void setExceptioncode(String exceptioncode) {
this.exceptioncode = exceptioncode == null ? null : exceptioncode.trim();
}

public String getExceptionDetail() {
return exceptionDetail;
}

public void setExceptionDetail(String exceptionDetail) {
this.exceptionDetail = exceptionDetail == null ? null : exceptionDetail.trim();
}

public String getParams() {
return params;
}

public void setParams(String params) {
this.params = params == null ? null : params.trim();
}

public String getCreateBy() {
return createBy;
}

public void setCreateBy(String createBy) {
this.createBy = createBy == null ? null : createBy.trim();
}

public Date getCreateDate() {
return createDate;
}

public void setCreateDate(Date createDate) {
this.createDate = createDate;
}
}

第四步:編寫dao,service

package org.shop.dao;

import org.shop.entity.SystemLog;

public interface SystemLogMapper {
int deleteByPrimaryKey(String id);

int insert(SystemLog record);

int insertSelective(SystemLog record);

SystemLog selectByPrimaryKey(String id);

int updateByPrimaryKeySelective(SystemLog record);

int updateByPrimaryKey(SystemLog record);

int count();
}

public interface SystemLogService {

int deleteSystemLog(String id);

int insert(SystemLog record);

int insertTest(SystemLog record);

SystemLog findSystemLog(String id);

int updateSystemLog(SystemLog record);

int count();
}

更多詳情見請繼續閱讀下一頁的精彩內容: http://www.linuxidc.com/Linux/2015-11/125029p2.htm

Spring中如何配置Hibernate事務 http://www.linuxidc.com/Linux/2013-12/93681.htm

Struts2整合Spring方法及原理 http://www.linuxidc.com/Linux/2013-12/93692.htm

基於 Spring 設計並實現 RESTful Web Services http://www.linuxidc.com/Linux/2013-10/91974.htm

Spring-3.2.4 + Quartz-2.2.0集成實例 http://www.linuxidc.com/Linux/2013-10/91524.htm

使用 Spring 進行單元測試 http://www.linuxidc.com/Linux/2013-09/89913.htm

運用Spring注解實現Netty服務器端UDP應用程序 http://www.linuxidc.com/Linux/2013-09/89780.htm

Spring 3.x 企業應用開發實戰 PDF完整高清掃描版+源代碼 http://www.linuxidc.com/Linux/2013-10/91357.htm

Copyright © Linux教程網 All Rights Reserved