Spirng3基于注解(annotation)整合ehcache 使用页面缓存、对象缓存

使用ehcache的工具类 使用ehcahe时自己做的工具类,方便以后使用 立即下载

一.概述


先了解下基础知识


1).了解下基于注释(annotation)的缓存(cache)技术

它本质上不是一个具体的缓存实现方案(例如  EHCache  或者  OSCache ),而是一个对缓存使用的抽象,通过在既有代码中添加少量它定义的各种  annotation ,即能够达到缓存方法的返回对象的效果。

Spring 的缓存技术还具备相当的灵活性,不仅能够使用 SpEL(Spring Expression Language)来定义缓存的 key 和各种 condition,还提供开箱即用的缓存临时存储方案,也支持和主流的专业缓存例如 EHCache 集成。

其特点总结如下:

  • l 通过少量的配置 annotation 注释即可使得既有代码支持缓存
  • l 支持开箱即用 Out-Of-The-Box,即不用安装和部署额外第三方组件即可使用缓存
  • l 支持 Spring Express Language,能使用对象的任何属性或者方法来定义缓存的 key 和 condition
  • l 支持 AspectJ,并通过其实现任何方法的缓存支持
  • l 支持自定义 key 和自定义缓存管理者,具有相当的灵活性和扩展性


2)对于Spring Cache的基本原理:

spring cache  的关键原理就是  spring AOP ,通过  spring AOP ,其实现了在方法调用前、调用后获取方法的入参和返回值,进而实现了缓存的逻辑。我们来看一下下面这个图:



图 2. 原始方法调用图

上图显示,当客户端“Calling code”调用一个普通类 Plain Object 的 foo() 方法的时候,是直接作用在 pojo 类自身对象上的,客户端拥有的是被调用者的直接的引用。

而 Spring cache 利用了 Spring AOP 的动态代理技术,即当客户端尝试调用 pojo 的 foo()方法的时候,给他的不是 pojo 自身的引用,而是一个动态生成的代理类


图 3. 动态代理调用图
 

如上图所示,这个时候,实际客户端拥有的是一个代理的引用,那么在调用 foo() 方法的时候,会首先调用 proxy 的 foo() 方法,这个时候 proxy 可以整体控制实际的 pojo.foo() 方法的入参和返回值,比如缓存结果,比如直接略过执行实际的 foo() 方法等,都是可以轻松做到的。

3)再了解下ehcache:

1.Ehcache可以对页面、对象、数据进行缓存,同时支持集群/分布式缓存。如果整合Spring、Hibernate也非常的简单,Spring对Ehcache的支持也非常好。EHCache支持内存和磁盘的缓存,支持LRU、LFU和FIFO多种淘汰算法,支持分布式的Cache,可以作为Hibernate的缓存插件。同时它也能提供基于Filter的Cache,该Filter可以缓存响应的内容并采用Gzip压缩提高响应速度。
2. Spring 的缓存技术还具备相当的灵活性,不仅能够使用 SpEL(Spring Expression Language)来定义缓存的 key 和各种 condition,还提供开箱即用的缓存临时存储方案,也支持和主流的专业缓存例如 EHCache 集成。

其特点总结如下:

  • 通过少量的配置 annotation 注释即可使得既有代码支持缓存
  • 支持开箱即用 Out-Of-The-Box,即不用安装和部署额外第三方组件即可使用缓存
  • 支持 Spring Express Language,能使用对象的任何属性或者方法来定义缓存的 key 和 condition
  • 支持 AspectJ,并通过其实现任何方法的缓存支持
  • 支持自定义 key 和自定义缓存管理者,具有相当的灵活性和扩展性


    源码下载

二. pom.xml

下面介绍下:JAR包的功能介绍:

Spring-core.jar: 
这个jar文件包含Spring框架基本的核心工具类,Spring其它组件要都要使用到这个包里的类,是其它组件的基本核心,当然你也可以在自己的应用系统中使用这些工具类。

spring-beans.jar:
这个jar文件是所有应用都要用到的,它包含访问配置文件、创建和管理bean以及进行Inversion of Control / Dependency Injection(IoC/DI)操作相关的所有类。
springIoC(依赖注入)的基础实现
如果应用只需基本的IoC/DI支持,引入spring-core.jar及spring-beans.jar文件就可以了。

spring-context-support.jar:
spring-context 的扩展支持,包含支持缓存Cache(ehcache)、JCA、JMX、邮 
件服务(Java Mail、COS Mail)、任务计划Scheduling(Timer、Quartz)方面的类。

spring-context.jar:
spring 提供在基础 IoC 功能上的扩展服务,此外还提供许多企业级服务的支持,如 邮件 
服务、任务调度、JNDI定位、EJB 集成、远程访问、 缓存以及各种视图层框架的封装等。

还有对于Application的支持

spring-expression.jar:
spring 表达式语言也就是 spel表达式

spring-test.jar:
spring 对Junit 等测试框架的简单封装。

commons-logging.jar:
是使用Spring-core.jar的必备包

slf4j-api:
slf4j-api本质就是一个接口定义。

slf4j-log4j12:
链接slf4j-api和log4j中间的适配器

log4j:
这个是具体的日志系统。通过slf4j-log4j12初始化Log4j,达到最终日志的输出。

junit:
测试工具

hamcrest-core:
是junit的依赖包,在4.11这个版本里,不包含这个包,4.8版本就不需要这个包

spring-aop:
是spirng-context的依赖包,因为springCache也采用AOP的原理

介绍一些常用Maven插件:
1. maven-dependency-plugin:
maven-dependency-plugin最大的用途是帮助分析项目依赖,dependency:list能够列出项目最终解析到的依赖列表,dependency:tree能进一步的描绘项目依赖树,dependency:analyze可以告诉你项目依赖潜在的问题,如果你有直接使用到的却未声明的依赖,该目标就会发出警告。maven-dependency-plugin还有很多目标帮助你操作依赖文件,例如dependency:copy-dependencies能将项目依赖从本地Maven仓库复制到某个特定的文件夹下面。

2. maven-compiler-plugin:
<!-- compiler插件, 设定JDK版本 -->

3. maven-war-plugin:
<!-- war插件用于打包成war项目 -->
使用maven-war-plugin这个插件可以在执行打包命令的时候指定我要打哪个环境的包, 而不需要去关注我现在要用什么配置文件了.当然只适用于Maven项目.
既然是web项目,就需要打war包,那就需要这个插件

4. maven-resources-plugin:
<!-- resource插件, 设定编码 -->
maven-compiler-plugin用来编译Java代码,maven-resources-plugin则用来处理资源文件。默认的主资源文件目录是src/main/resources,很多用户会需要添加额外的资源文件目录,这个时候就可以通过配置maven-resources-plugin来实现。此外,资源文件过滤也是Maven的一大特性,你可以在资源文件中使用${propertyName}形式的Maven属性,然后配置maven-resources-plugin开启对资源文件的过滤,之后就可以针对不同环境通过命令行或者Profile传入属性的值,以实现更为灵活的构建。
xml、properties文件都是资源文件,编码的时候遇到中文总要进行转码!用什么编码?UTF-8,那就记得强制

5. maven-source-plugin:
<!-- 源码插件 -->
maven-source-plugin提供项目自动将源码打包并发布的功能

6. maven-clean-plugin:
清除target 文件夹下由install产生的一些东西例如 war

7. maven-install-plugin:
用于自动安装项目的主要工件(JAR、WAR或EAR),其POM和任何附加构件(来源、javadoc等)所产生的一个特定的项目。

 

三.下面来看真正的配置吧

案例采用的是maven管理项目,可以把源码直接下载,放到安装了maven插件的eclipse里面,直接运行即可
maven的知识后续会讲,请关注我的博客

对象缓存:

application.xml:

加入: xmlns:p="http://www.springframework.org/schema/p"

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. <context:annotation-config />  
  2. <context:component-scan base-package="com.lzw" />  <!-- 自动扫描所有注解该路径 -->  
  3. <!--start spring缓存 -->  
  4.  <cache:annotation-driven /><!-- 支持缓存的配置项 -->  
  5. <!--start 一般的spring_ehcache缓存管理 -->  
  6. <bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager" p:cache-manager-ref="ehcache"/>  
  7. <!-- EhCache library setup -->  
  8. <bean id="ehcache" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean" p:config-location="classpath:ehcache.xml" p:shared="true"/>   
  9.     <!-- 保持使用p:shared="true"同一个缓存 -->  
  10. <!--end 一般的spring_ehcache缓存管理 -->  
  11. <!--end spring缓存 -->  

EhcacheServiceImpl:

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. @Service("EhcacheServiceImpl")  
  2. public class EhcacheServiceImpl{  
  3. @Cacheable(value="queryCache",key="#idCardOrghCard+'checkIdCardOrghCard'")  
  4. public String checkIdCardOrghCard(String idCardOrghCard) {  
  5. // TODO Auto-generated method stub  
  6. System.out.println("测试执行方法");  
  7. return idCardOrghCard;  
  8. }  


分析下:
@Cacheable注解可以用在方法或者类级别。当他应用于方法级别的时候,只缓存当前方法的返回值。当应用在类级别的时候,这个类的所有方法的返回值都将被缓存。

@Cacheable(value="queryCache",key="#idCardOrghCard+'checkIdCardOrghCard'")

queryCache指的是ehcache.xml里的缓存名字
#idCardOrghCard 用的是Spring的spel表达式
意思就是可以取到
public String checkIdCardOrghCard(String idCardOrghCard) {}
这个方法里,参数所传递过来的值
然后加上方法名'checkIdCardOrghCard' 这样可以保证唯一性,保证唯一性,可以对后续的缓存管理有帮助,缓存的管理后续会讲!!请关注我的博客

 

ehcache.xml:

<cache name="queryCache" maxElementsInMemory="2000" eternal="false"

timeToIdleSeconds="900" timeToLiveSeconds="1800" overflowToDisk="true" />

ehcache参数的含义:

  • maxElementsInMemory 缓存最大数目
  • eternal 缓存是否持久
  • timeToIdleSeconds 当缓存闲置n秒后销毁 
  • timeToLiveSeconds 当缓存存活n秒后销毁
  • overflowToDisk 是否保存到磁盘,当系统宕机时

EhcacheTest.java:

测试方式为集成测试:集成测试与单元测试区别后续会讲,大概就是集成把整个程序都串起来,单元落实到个体

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. @RunWith(SpringJUnit4ClassRunner.class)  
  2. @ContextConfiguration(locations = {"classpath:applicationContext.xml"})  
  3. public class EhcacheTest {  
  4.  @Resource  
  5.     private ApplicationContext ctx;       
  6.    @Test  
  7.     public void test1(){  
  8.    EhcacheServiceImpl EhcacheServiceImpl=ctx.getBean("EhcacheServiceImpl",EhcacheServiceImpl.class);  
  9. System.out.println(EhcacheServiceImpl.checkIdCardOrghCard("111"));//第一次走数据库  
  10. System.out.println(EhcacheServiceImpl.checkIdCardOrghCard("111"));//第二次不走数据库,走缓存     }}  
  11.    

Log4j.properties:

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. log4j.rootLogger=off, A1  
  2. log4j.appender.A1.layout=org.apache.log4j.PatternLayout  
  3. log4j.appender.A1.layout.ConversionPattern=>>> %d %5p [%l]- %m%n  
  4. log4j.appender.A1=org.apache.log4j.ConsoleAppender  

我默认设置成off 如果想看信息改成 info或debug

来看看log4j参数含义:


log4j.rootLogger=off,A1
Off: 最高等级,用于关闭所有日志记录

Fatal: 指出每个严重的错误事件将会导致应用程序的退出。

Error: 指出虽然发生错误事件,但仍然不影响系统的继续运行。

Warn: 表明会出现潜在的错误情形

Info: 一般用在粗粒度级别上,强调应用程序的运行全程

Debug: 一般和在粗粒度级别上,强调应用程序的运行全程。

All: 最低等级,用于打开所有日志记录。

Log4j建议只使用四个级别,优先级从高到低分别是ERROR、WARN、INFO、DEBUG。通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关。


log4j.appender.A1=org.apache.log4j.ConsoleAppender
Log4j提供的appender有以下几种:
org.apache.log4j.ConsoleAppender(控制台)

org.apache.log4j.FileAppender(文件)

org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)

org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生新文件)

org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)


log4j.appender.A1.layout=org.apache.log4j.PatternLayout
Log4j提供的layout有以下几种:
    org.apache.log4j.HTMLLayout(以HTML表格形式布局),

  org.apache.log4j.PatternLayout(可以灵活地指定布局模式),

  org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),

  org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)


log4j.appender.A1.layout.ConversionPattern=>>> %d %5p [%l]- %m%n

如果采用了PatternLayout, 则Log4J采用类似C语言中的printf函数的打印格式格式化日志信息,打印参数如下:

%m 输出代码中指定的消息  

%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL 

%r 输出自应用启动到输出该log信息耗费的毫秒数   

%c 输出所属的类目,通常就是所在类的全名   

%t 输出产生该日志事件的线程名   

%n 输出一个回车换行符,Windows平台为“rn”,Unix平台为“n”   

%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921 

%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java:10)

%x: 输出和当前线程相关联的NDC(嵌套诊断环境),尤其用到像java servlets这样的多客户多线程的应用中。

%%: 输出一个”%”字符 %F: 输出日志消息产生时所在的文件名称

%L: 输出代码中的行号

%m: 输出代码中指定的消息,产生的日志具体信息

%n: 输出一个回车换行符,Windows平台为”\r\n”,Unix平台为”\n”输出日志信息换行 可以在%与模式字符之间加上修饰符来控制其最小宽度、最大宽度、和文本的对齐方式。


下面看下运行结果:
-------------第一次--------------------
测试执行方法
111
-------------第二次--------------------
111
-------------第三次--------------------
测试执行方法
222
-------------第四次--------------------
222

从结果可以看出来
第一次走了方法,执行了System.out.println("测试执行方法"); 然后把返回的值加载到缓存中
第二次没有走方法,而是直接走了缓存,所以直接返回了缓存值而没有走方法


页面缓存:

web.xml:

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. <!--start 页面缓存  -->  
  2. <filter>  
  3. <filter-name>indexCacheFilter</filter-name>  
  4. <filter-class>net.sf.ehcache.constructs.web.filter.SimplePageCachingFilter</filter-class>  
  5. </filter>  
  6. <filter-mapping>  
  7. <filter-name>indexCacheFilter</filter-name>  
  8. <url-pattern>/*</url-pattern>  
  9. </filter-mapping>  
  10. <!--end 页面缓存 -->  
  11.    
  12. <welcome-file-list>  
  13. <welcome-file>login.jsp</welcome-file>  
  14. </welcome-file-list>  


说明: net.sf.ehcache.constructs.web.filter.SimplePageCachingFilter
在ehcache.xml必须有这个名的SimplePageCachingFilter缓存 加入缓存后页面不会被更新所以应该加到没有数据变化的页面上


ehcache.xml:


<cache name="SimplePageCachingFilter" maxElementsInMemory="2000" eternal="false"
timeToIdleSeconds="900" timeToLiveSeconds="1800" overflowToDisk="true" />

最后验证页面是不是被缓存可以采用<%=new java.util.Date()%> 来看时间是不是改变了,如果没有改变说明页面已经被缓存



至此,spring与ehcache的对象缓存、页面缓存结合就完毕了,后续还会对spring系列hibernate系列进行更多更新请多关注我的博客。

ehcache缓存的jar包和配置文件 ehcache缓存的jar包和配置文件。 立即下载

相关推荐

Spring+Ehcache集成

基于公司的项目在Spring中集成Ehcache,并提供EhcaheUtils工具类,并通过Spring的AOP编程实现方法缓存注解话,先奉献出核心代码,需要的朋友可以参考哦!

Spring 整合Ehcache Server

最近响应公司的要求搞了一个Ehcache集群部署,由于之前的项目使用的Redis,现在要改成Ehcache,通过查阅资料发现ehcache是可以实现分布式的,当然现在网上查找到的资料全都是配置,而且全都是一样的,看的让人很恼火,没办法,自己整喽。 从官网上面看了一下示例代码,然后也查阅很多资料改了配置,发现spring集成ehcache还是挺简单的,直接修改配置文件,然后启动ehcache的服务...

qq_33733799的博客 754

Ehcache工具类

本工具类包括初始化cache 修改缓存容器配置 向指定容器中设置值 取值 删除指定的ehcache容器 删除所有容器 删除容器内所有元素 释放CacheManage 获取所有的cache名称

Spring3

目录

qq_48019875的博客 1028

Type-c超声波切割刀

接下来,我将提供Type-C超声波切割刀项目的C代码实现示例,代码将按照上述分层架构和模块化设计进行组织。为了达到3000行以上的代码量,我将尽可能详细地实现各个模块的功能,并添加必要的注释和错误处理。通过采用分层架构和模块化设计,我们可以建立一个可靠、高效、可扩展的系统平台,为产品的成功奠定坚实的基础。实际项目中,需要更详细的硬件驱动、更完善的功能模块、更严格的测试验证和更周全的维护升级计划。针对Type-C超声波切割刀这个项目,我将从以下几个方面详细阐述最适合的代码设计架构,并提供具体的C代码实现。

lianmengde的博客 1194

常见卫星图源下载教程

上面列出的8个常见的亚米级别数据源都可以通过xyz协议或者wmts/wms协议进行下载。这些协议是什么?地理信息数据为了方便网络传输,制定了一系列的地理数据传输标准(wms/wmts/xyz等)。协议特点优点缺点栅格数据支持矢量数据支持WMS通过HTTP请求获取GIS数据,服务器会将数据渲染成图像高度定制的地图;交互性强服务器渲染图像,响应时间较长支持有限支持WMTS提供预渲染的地图瓦片速度快,因为地图瓦片可以预先生成并在请求时快速提供瓦片的内容是预先确定的,无法进行定制支持。

锐多宝的地理空间 1万+

Springboot下Ehcache的基本使用:附带工具类,快来围观吧

1 使用步骤 1.1 引入依赖与启动类注解 引入依赖,版本跟随Springboot即可 <!--ehcache缓存--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-cache</artifactId> </depe

码海拾贝 1068

机器人控制基础:伺服驱动器的泄放电阻

摘要:伺服驱动器泄放电阻用于消耗电机减速或制动时产生的再生电能,防止母线电压过高损坏元件。其核心作用是将多余电能转化为热能,规避硬件损坏和停机风险。选型需关注功率、阻值和封装三大参数,功率应匹配再生能量,阻值需符合驱动器要求,封装应满足散热需求。可通过动态监测母线电压或静态检测电阻阻值来判断其是否正常工作。

start_up_go的博客 384

Spring AOP +EHcache为Service层方法增加缓存

在铁科院做了一个关于医保报销的项目,在这个个系统中大量使用了下拉列表框,系统主要是给机关单位使用而且都是一些干部退休了啥的,年龄都比较大不愿意自己输入东西,因此界面上的很多值都是下拉列表框从数据字典表里面加载出来。 如此以来字典表的数据量变的越来越大,在一个界面上往往需要频繁的与字典表交互,觉的很影响性能于是我们增加了缓存,即为service层中的指定方法缓存...

weixin_34163741的博客 245

Pandas滚动窗口的妙用:动态计算列数据的最大值

Pandas的滚动窗口(rolling window)功能是数据分析中处理时间序列数据的重要工具。本文通过实例演示了如何使用rolling(window=4).max()计算DataFrame列A的滚动最大值,并将结果存入新列Max_Range。该方法会在4个元素的滑动窗口内计算最大值,前3行因数据不足显示为NaN。这种技术广泛应用于金融分析(如股价波动)、数据平滑和趋势识别等场景,能有效帮助分析数据的动态变化特征。示例展示了从数据准备到结果输出的完整流程,体现了Pandas在处理滑动窗口计算时的高效性和便

m0_74337424的博客 53

python:实现矩阵SVD分解(附完整源码)

python:实现矩阵SVD分解(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 604

EhCache 简介

EhCache 是一个纯Java的进程内缓存框架,具有快速、精干等特点,是Hibernate中默认CacheProvider。Ehcache是一种广泛使用的开源Java分布式缓存。主要面向通用缓存,Java EE和轻量级容器。它具有内存和磁盘存储,缓存加载器,缓存扩展,缓存异常处理程序,一个gzip缓存servlet过滤器,支持REST和SOAP api等特点。   Spring 提供了对缓存功能的抽象:即允许绑定不同的缓存解决方案(如Ehcache),但本身不直接提供缓存功能的实现。它支持注解方式.

weixin_57763462的博客 1016

【WorkBuddy专栏58】腾讯为什么要「自己打自己」——7款AI智能体产品全景对比与「赛马」逻辑深度拆解

【WorkBuddy专栏57】你的左侧空间不是「日任务清单」——工作空间才是 WB 变聪明的核心秘密

AI人人懂 685

Spirng cache

Spirng cache ,redis,ehcache

意亦逸的博客 325

【Halcon-2D测量】add_metrology_object_rectangle2_measure 函数功能(用于向2D计量模型中添加旋转矩形(rectangle2类型)计量对象)

HALCON算子add_metrology_object_rectangle2_measure解析摘要 该算子是HALCON 2D计量模块的核心算子,用于添加旋转矩形计量对象并配置测量参数。主要功能包括:定义旋转矩形几何轮廓(中心坐标、主轴角度、长短半长);生成垂直于矩形边界的测量区域;设置边缘提取预处理参数(高斯平滑、振幅阈值)。关键注意事项:MeasureLength1必须小于矩形长短半长;角度参数Phi需使用弧度单位;多线程需同步模型句柄。该算子适用于方形螺母、PCB板边框等矩形零件的精密测量,需与a

weixin_45590420的博客 1225

微信对话开放平台智能对话模块的几个亮点

微信AI首席科学家牛成公布了最新开放方案,并重磅宣布全面开放各层次 NLP 能力。具体说来,微信 AI 迈出了“三大步”: 以硬件合作为核心的智言小微硬件开放平台 2.0 正式亮相; 公开以对话开放能力为核心的微信对话开放平台; 全面开放以自然语言处理能力为核心的 NLP 基础技术平台。 参考:微信9年:张小龙指明方向,微信AI全面开放NLP能力 今天公开课上隆重介绍了...

素质云笔记 1万+

Spring系列——两万字长文教会你Spring (超详细!!!)

到此,我们学习完了 Spring 框架,包括: Spring 体系结构 Spring Bean Spring AOP Spring JDBC Spring 事务管理 写此文章是为了做个笔记,等以后自己忘记了可以回头快速上手。同时也分享给小伙伴们,希望我们都能越来越好,不会就学 B 站,不懂就问 AI,总好过自己两耳不闻窗外事的独自琢磨。 最后认识一下吧,笔者叫`北迁`,hhh~~。

weixin_63009611的博客 1181

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

ehCacheService

public class CacheService { private static CacheManager cacheManager = null; static{ cacheManager = CacheManager.create(Thread.currentThread().getContextClassLoader().getResourceAs...

xiasys001的专栏 186

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Annotation实现缓存

设计: 1. 定义一个接口 2. 定义一个实现类 3. 定义一个Annotation 4. 定义一个Annotation解析器 5. 定义一个Proxy 6. 定义一个proxy来代理接口实现。 代码如下: [code="java"] package org.frame.base.annotation.intercept; public interface TestI ...

犀利的代码总是很精炼 199

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

JAVA中使用最广泛的本地缓存?Ehcache的自信从何而来2 —— Ehcache的各种项目集成与使用初体验

的集成,解决上述的问题,需要做一些额外的适配逻辑。通过xml配置的方式,可以很直观的看出这个缓存对象的所有关键属性约束,也是相比于代码中直接配置的方式更有优势的一个地方。因为Ehcache在创建缓存的时候可以指定的参数较多,如果通过上面的代码方式指定配置,略显繁琐且不够清晰直观,并且当需要创建多个不同的缓存对象的时候比较麻烦。从测试结果可以看出,查询之后方法的入参与返回值被做了缓存,再次去查询的时候并没有真正的执行具体的查询操作方法,而调用删除方法之后再次查询,又会触发了真正的查询方法的执行。

BASK2311的博客 969

spring + ehcache 注解使用实例

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34148508的博客 243

使用Ehcache的两种方式(代码、注解)

Ehcache,一个开源的缓存机制,在一些小型的项目中可以有效的担任缓存的角色,分担数据库压力此外,ehcache在使用上也是极为简单, 下面是简单介绍一下ehcahce的本地使用的两种方式: 1,使用代码编写的方式使用ehcache: 准备一个可用的maven项目:并加入依赖; net.sf.ehcache ehcache 2.8.3

小白杨 1万+

spring框架使用EhCache本地缓存数据工具类

第一步:spring.xml配置CacheManager。 &lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;bean id="springCacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager"&gt; &lt;property name

tongshuixu8025的博客 463
上一篇: 数据库水平拆分和垂直拆分区别(
下一篇: windows上运行npm Error: ENOENT, stat 'C:\Users\
zljjava
博客等级 码龄15年 155粉丝 15原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值