spring缓存机制-基本原理(五)
来源:互联网 发布:mysql 查看临时表空间 编辑:程序博客网 时间:2024/05/22 13:29
原文链接:http://blog.csdn.net/sidongxue2/article/details/30984555
spring是一个轻量级开源框架,以IoC(Inverse of Control:控制反转)和AOP(Aspect Oriented Programming:面向切面编程)为内核,
兼具功能强大的的原生展现层spring mvc,原生持久层spring jdbc和原生业务层等技术,并且以海纳百川的胸怀整合了开源世界里众多
著名的第三方框架和类库,已经逐渐成为世界上使用最多的JavaEE企业级应用开源框架.
在使用spring缓存技术过程中,我们用到了三种注释@Cacheable、@CachePut和@CacheEvict.
1.@Cacheable作用和配置方法
@Cacheable的作用主要针对方法配置,根据方法的请求参数对其结果进行缓存.
value:缓存的名称,在spring配置文件中定义,必须至少指定一个.例如:@Cacheable(value="cache1")或者@Cacheable(value={"cache1","cache2"}.
key:缓存的key,可以为空,支持使用SpEL编写,如果为空缺省按照方法的所有参数进行组合.例如:@Cacheable(value="cache1",key="#username").
condition:缓存的条件,可以为空,支持使用SpEL编写,如果为空缓存全部数据.例如:@Cacheable(value="cache1",condition="#username.length() > 5").
2.@CachePut作用和配置方法
@CachePut的作用主要针对方法配置,能够根据方法的请求参数对其结果进行缓存,和@Cacheable不同的是,它每次都会触发真实方法的调用.
value:缓存的名称,在spring配置文件中定义,必须至少指定一个.例如:@CachePut(value="cache1")或者@CachePut(value={"cache1","cache2"}.
key:缓存的key,可以为空,支持使用SpEL编写,如果为空缺省按照方法的所有参数进行组合.例如:@CachePut(value="cache1",key="#username").
condition:缓存的条件,可以为空,支持使用SpEL编写,如果为空缓存全部数据.例如:@CachePut(value="cache1",condition="#username.length() > 5").
3.@CacheEvict作用和配置方法
@CachEvict的作用主要针对方法配置,能够根据一定的条件对缓存进行清空.
value:缓存的名称,在spring配置文件中定义,必须至少指定一个.例如:@CachEvict(value="cache1")或者@CachEvict(value={"cache1","cache2"}.
key:缓存的key,可以为空,支持使用SpEL编写,如果为空缺省按照方法的所有参数进行组合.例如:@CachEvict(value="cache1",key="#username").
condition:缓存的条件,可以为空,支持使用SpEL编写,如果为空清空全部缓存数据.例如:@CachEvict(value="cache1",condition="#username.length() > 5").
allEntries:是否清空所有缓存内容,缺省为false,如果为true则方法调用后将立即清空所有缓存例如:@CachEvict(value="cache1",allEntries=true).
beforeInvocation:是否在方法执行前就清空,缺省为false,如果指定为 true则在方法还没有执行的时候就清空缓存,缺省情况下,如果方法执行抛出异常,
则不会清空缓存.例如:@CachEvict(value="cache1",beforeInvocation=true).
通过上面三种注释我们可以轻松的为程序实现缓存,并且不用任何缓存逻辑,那么spring缓存的原理是什么呢?
和spring的事务管理类似,spring cache的关键原理是spring AOP,即在方法调用前,掉用后获取方法的入参和返回值,进而实现缓存的逻辑.
当调用某个未添加缓存注解的服务时,调用者拥有的是被调用者的直接的应用,而spring cache利用了Spring AOP的动态代理技术,
即当给此服务添加缓存注解后,调用者实际拥有的是被调用者的代理引用.当调用代理的方法时,代理可以整体控制实际的方法的入参和返回值.
比如缓存结果,直接跳过执行实际的方法等.
兼具功能强大的的原生展现层spring mvc,原生持久层spring jdbc和原生业务层等技术,并且以海纳百川的胸怀整合了开源世界里众多
著名的第三方框架和类库,已经逐渐成为世界上使用最多的JavaEE企业级应用开源框架.
在使用spring缓存技术过程中,我们用到了三种注释@Cacheable、@CachePut和@CacheEvict.
1.@Cacheable作用和配置方法
@Cacheable的作用主要针对方法配置,根据方法的请求参数对其结果进行缓存.
value:缓存的名称,在spring配置文件中定义,必须至少指定一个.例如:@Cacheable(value="cache1")或者@Cacheable(value={"cache1","cache2"}.
key:缓存的key,可以为空,支持使用SpEL编写,如果为空缺省按照方法的所有参数进行组合.例如:@Cacheable(value="cache1",key="#username").
condition:缓存的条件,可以为空,支持使用SpEL编写,如果为空缓存全部数据.例如:@Cacheable(value="cache1",condition="#username.length() > 5").
2.@CachePut作用和配置方法
@CachePut的作用主要针对方法配置,能够根据方法的请求参数对其结果进行缓存,和@Cacheable不同的是,它每次都会触发真实方法的调用.
value:缓存的名称,在spring配置文件中定义,必须至少指定一个.例如:@CachePut(value="cache1")或者@CachePut(value={"cache1","cache2"}.
key:缓存的key,可以为空,支持使用SpEL编写,如果为空缺省按照方法的所有参数进行组合.例如:@CachePut(value="cache1",key="#username").
condition:缓存的条件,可以为空,支持使用SpEL编写,如果为空缓存全部数据.例如:@CachePut(value="cache1",condition="#username.length() > 5").
3.@CacheEvict作用和配置方法
@CachEvict的作用主要针对方法配置,能够根据一定的条件对缓存进行清空.
value:缓存的名称,在spring配置文件中定义,必须至少指定一个.例如:@CachEvict(value="cache1")或者@CachEvict(value={"cache1","cache2"}.
key:缓存的key,可以为空,支持使用SpEL编写,如果为空缺省按照方法的所有参数进行组合.例如:@CachEvict(value="cache1",key="#username").
condition:缓存的条件,可以为空,支持使用SpEL编写,如果为空清空全部缓存数据.例如:@CachEvict(value="cache1",condition="#username.length() > 5").
allEntries:是否清空所有缓存内容,缺省为false,如果为true则方法调用后将立即清空所有缓存例如:@CachEvict(value="cache1",allEntries=true).
beforeInvocation:是否在方法执行前就清空,缺省为false,如果指定为 true则在方法还没有执行的时候就清空缓存,缺省情况下,如果方法执行抛出异常,
则不会清空缓存.例如:@CachEvict(value="cache1",beforeInvocation=true).
通过上面三种注释我们可以轻松的为程序实现缓存,并且不用任何缓存逻辑,那么spring缓存的原理是什么呢?
和spring的事务管理类似,spring cache的关键原理是spring AOP,即在方法调用前,掉用后获取方法的入参和返回值,进而实现缓存的逻辑.
当调用某个未添加缓存注解的服务时,调用者拥有的是被调用者的直接的应用,而spring cache利用了Spring AOP的动态代理技术,
即当给此服务添加缓存注解后,调用者实际拥有的是被调用者的代理引用.当调用代理的方法时,代理可以整体控制实际的方法的入参和返回值.
比如缓存结果,直接跳过执行实际的方法等.
0 0
- spring缓存机制-基本原理(五)
- spring缓存机制-基本原理(五)
- Spring缓存机制
- Spring缓存机制
- spring缓存机制
- Spring 缓存机制
- spring缓存机制-自定义缓存(六)
- Spring缓存机制的理解
- Hibernate+spring缓存机制配置
- Hibernate+spring缓存机制配置
- Spring缓存机制的理解
- Spring缓存机制的理解
- Spring缓存机制的理解
- spring的eheache缓存机制
- spring学习之---缓存机制
- Spring的缓存机制应用
- Hibernate+spring缓存机制配置
- Spring Cache Spring的缓存机制
- 自动车牌识别(ANPR)练习项目学习笔记2(基于opencv)
- Android Studio环境下Android单元测试(基于Robolectric+Mockito)
- 怎样最高效地学习Scala
- 鞍点
- [leetcode] 357. Count Numbers with Unique Digits
- spring缓存机制-基本原理(五)
- ubuntu 系统里面原来可以输入中文,突然输入法不能输入中文,但是搜索框内可以输入中文!解决办法
- 教你10行代码写侧滑菜单
- 用junit对java代码进行单元测试时需要注意的问题。
- eclipse中JBoss服务器无法以Debug模式运行
- 南京工业大学校园无线一账号多设备共享上网的方式
- 个人信息
- http web 返回码概念
- 16进制