2.编写简单的ehcahe.xml配置文件:
<?xml version="1.0" encoding="UTF-8"?><ehcache xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”
xsi:noNamespaceSchemaLocation=“http://ehcache.org/ehcache.xsd”>
<defaultCache maxElementsInMemory=“10000” eternal=“false”
timeToIdleSeconds=“30” timeToLiveSeconds=“30” overflowToDisk=“true” />
<cache name=“DEFAULT_CACHE” maxElementsInMemory=“10000” eternal=“false”
timeToIdleSeconds=“120” timeToLiveSeconds=“120” overflowToDisk=“true”
diskSpoolBufferSizeMB=“30” maxElementsOnDisk=“10000000”
diskPersistent=“false” diskExpiryThreadIntervalSeconds=“120”
memoryStoreEvictionPolicy=“LRU” />
<cache name=“userCache” maxElementsInMemory=“3000” eternal=“false”
overflowToDisk=“true” timeToIdleSeconds=“3600” timeToLiveSeconds=“3600”
memoryStoreEvictionPolicy=“LFU” />
需要注意的是下面的自定义的cache。后面会有对应的详细解释;
3.整合spring:
在配置文件中加入ehcache的相关配置代码:
<?xml version="1.0" encoding="UTF-8"?><beans xmlns=“http://www.springframework.org/schema/beans”
xmlns:p=“http://www.springframework.org/schema/p” xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”
xmlns:context=“http://www.springframework.org/schema/context”
xmlns:mvc=“http://www.springframework.org/schema/mvc”
xmlns:ehcache=“http://ehcache-spring-annotations.googlecode.com/svn/schema/ehcache-spring”
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.2.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
http://ehcache-spring-annotations.googlecode.com/svn/schema/ehcache-spring
http://ehcache-spring-annotations.googlecode.com/svn/schema/ehcache-spring/ehcache-spring-1.1.xsd">
<mvc:annotation-driven />
<context:component-scan base-package=“com.guide” />
<ehcache:annotation-driven cache-manager=“ehCacheManager” />
<bean id=“ehCacheManager”
class=“org.springframework.cache.ehcache.EhCacheManagerFactoryBean”>
…
4.保存代码,先让项目正常启动:
启动的时候你会发现下面几个异常信息:
①:
严重: Servlet [spring] in web application [/CscaCenter] threw load() exception
org.xml.sax.SAXParseException; lineNumber: 21; columnNumber: 62; cvc-complex-type.2.4.c: 通配符的匹配很全面, 但无法找到元素 ‘ehcache:annotation-driven’ 的声明。
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:198)
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:134)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:437)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:368)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(X
【一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义】
浏览器打开:qq.cn.hn/FTf 免费领取
MLErrorReporter.java:325)…
解决办法:在pom里面引入jar包
com.googlecode.ehcache-spring-annotations
ehcache-spring-annotations
1.1.2
jar
compile
②:
严重: Servlet [spring] in web application [/CscaCenter] threw load() exception
net.sf.ehcache.CacheException: Another unnamed CacheManager already exists in the same VM. Please provide unique names for each CacheManager in the config or do one of following:
-
Use one of the CacheManager.create() static factory methods to reuse same CacheManager with same name or create one if necessary
-
Shutdown the earlier cacheManager before creating new one with same name.
The source of the existing CacheManager is: DefaultConfigurationSource [ ehcache.xml or ehcache-failsafe.xml ]
at net.sf.ehcache.CacheManager.assertNoCacheManagerExistsWithSameName(CacheManager.java:529)
at net.sf.ehcache.CacheManager.init(CacheManager.java:374)
at net.sf.ehcache.CacheManager.(CacheManager.java:259)
at org.springframework.cache.ehcache.EhCacheManagerFactoryBean.afterPropertiesSet(EhCacheManagerFactoryBean.java:166)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1612)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1549)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:475)
…
解决办法:
在ehCacheManager的bean里面添加shared属性:
<bean id=“ehCacheManager”
class=“org.springframework.cache.ehcache.EhCacheManagerFactoryBean”>
OK 截止到现在 ehcache缓存的基本配置已经结束了。
下篇再说cache的详细用法。