什么网站值得做,问答类网站开发,wordpress 饼状图,飞创网站建设Java缓存框架使用EhCache结合Spring AOP 一.Ehcache简介 EhCache是一个纯Java的进程内缓存框架#xff0c;具有如下特点#xff1a; 1. 快速简单#xff0c;非常容易和应用集成。 2.支持多种缓存策略 。 3. 缓存数据有两级#xff1a;内存和磁盘#xff0c;因…Java缓存框架使用EhCache结合Spring AOP 一.Ehcache简介 EhCache是一个纯Java的进程内缓存框架具有如下特点 1. 快速简单非常容易和应用集成。 2.支持多种缓存策略 。 3. 缓存数据有两级内存和磁盘因此无需担心容量问题 。 4. 缓存数据会在虚拟机重启的过程中写入磁盘 。 5. 可以通过RMI、可插入API等方式进行分布式缓存。 6. 具有缓存和缓存管理器的侦听接口 。 7. 支持多缓存管理器实例以及一个实例的多个缓存区域 等特点。二.Ehcache配置的相关参数 Ehcache 的配置很灵活官方提供的配置方式有好几种,你可以通过声明配置、在xml中配置、在程序里配置或者调用构造方法时传入不同的参数。下面以最常用的XML 配置为例说下配置的相关参数的意义ehcache.xml是最常见的一个文件ehcache一般会通过CacheManager从classpath 加载该文件完成Cache的实例化。 1.ehcache.xml中的配置信息 ehcache.xml片段 ehcachediskStore pathjava.io.tmpdir/defaultCachenamenamemaxElementsInMemory10000eternalfalsetimeToIdleSeconds120timeToLiveSeconds120overflowToDisktruemaxElementsOnDisk10000000diskPersistentfalsediskExpiryThreadIntervalSeconds120memoryStoreEvictionPolicyLRU//ehcache 2.Cache中常用参数的具体意义 1nameCache的唯一标识。 2maxElementsInMemory内存中最大缓存对象数。 3eternalElement是否永久有效一旦设置truetimeout将不起作用。 4timeToIdleSeconds设置Element在失效前的允许闲置时间。仅当element不是永久有效时使用可选属性默认值是0也就是可闲置时间无穷大。 5timeToLiveSeconds设置Element在失效前允许存活时间。最大时间介于创建时间和失效时间之间。仅当element不是永久有效时使用默认是0.也就是element存活时间无穷大。 6overflowToDisk配置此属性当内存中Element数量达到maxElementsInMemory时Ehcache将会Element写到磁盘中。 7maxElementsOnDisk磁盘中最大缓存对象数若是0表示无穷大。 8 memoryStoreEvictionPolicy当达到maxElementsInMemory限制时Ehcache将会根据指定的策略 去清理缓存中的内容。默认策略是LRU最近最少使用你也可以设置为FIFO先进先出或是LFU较少使用 三.Spring和Ehcache的集成 1.ehcache.xml 2.beans.xml的配置 bean idcacheManagerclassorg.springframework.cache.ehcache.EhCacheManagerFactoryBeanproperty nameconfigLocationvalueclasspath:ehcache.xml/value/property/beanbean idlevelOneCache classorg.springframework.cache.ehcache.EhCacheFactoryBeanproperty namecacheManagerref localcacheManager //propertyproperty namecacheNamevalueconfigCache/value/property/bean 3.测试类 输出如下 cacheObject[name:test],无法从缓存中取到cacheObject[name:test],从缓存中取到cacheObject[name:test],从缓存中取到cacheObject[name:test],从缓存中取到cacheObject[name:test],从缓存中取到 四.利用Spring AOP和Ehcache实现线程级方法缓存 在复杂的业务逻辑或在一次计算中需多次调用同一个DAO或远程服务在这种情况下均可对计算结果缓存起来不但可以减少了不必要的调用次数还同时可以提高系统运算性能。下面以缓存一个service为例说明一下其用法。 1.TestService接口 2.TestServiceImpl实现类 3.拦截器的实现 4.Bean的配置 5.测试方法 其输出结果如下 第一次调用方法并缓存其值:mango
从缓存中取得的值为mango
从缓存中取得的值为mango
从缓存中取得的值为mango
从缓存中取得的值为mango 转载于:https://www.cnblogs.com/mengyuxin/p/6396269.html