Spring Cache抽象-使用SpEL表达式

原创 2017年10月04日 12:36:55

概述

在Spring Cache注解属性中(比如key,condition和unless),Spring的缓存抽象使用了SpEl表达式,从而提供了属性值的动态生成及足够的灵活性。

下面的代码根据用户的userCode进行缓存,对于key属性,使用了表达式自定义键的生成。

public class UserService {
    private Map<Integer, User> users = new HashMap<Integer, User>();
    {
        users.put(1, new User("1", "w1",37));
        users.put(2, new User("2", "w2", 34));
    }

    @Cacheable(value = "users", key = "#user.userCode" condition = "#user.age < 35")
    public User getUser(User user) {
        System.out.println("User with id " + user.getUserId() + " requested.");
        return users.get(Integer.valueOf(user.getUserId()));
    }



SpEl表达式

SpEL表达式可基于上下文并通过使用缓存抽象,提供与root独享相关联的缓存特定的内置参数。

名称 位置 描述 示例
methodName root对象 当前被调用的方法名 #root.methodname
method root对象 当前被调用的方法 #root.method.name
target root对象 当前被调用的目标对象实例 #root.target
targetClass root对象 当前被调用的目标对象的类 #root.targetClass
args root对象 当前被调用的方法的参数列表 #root.args[0]
caches root对象 当前方法调用使用的缓存列表 #root.caches[0].name
Argument Name 执行上下文 当前被调用的方法的参数,如findArtisan(Artisan artisan),可以通过#artsian.id获得参数 #artsian.id
result 执行上下文 方法执行后的返回值(仅当方法执行后的判断有效,如 unless cacheEvict的beforeInvocation=false) #result
版权声明:show me the code ,change the world

相关文章推荐

Spring使用SpEL表达式装配Bean

Spring使用SpEL表达式装配Bean标签(空格分隔): Spring技术SpEL的基本原理SpEL表达式的首要目标是通过计算获得某个值。在计算这个数值的过程中,会使用到其他的值并会对这些值进行操...

[Spring实战系列](11)SpEL使用表达式装配

到目前为止,我们为Bean 的属性和构造器参数装配的所有东西都是在Spring 的XML 配置文件中静态定义的。 id = "yoona" class = "com.sjf.bean.Stude...

spring ioc容器注入的集中方式,以及属性注入的集中依赖,继承,使用SPEL表达式,ioc容器的生命周期,bean的几种工厂方法配置方式,bean的自动装配

注入方式: 1.属性注入方式 2.构造方法注入 自动装配: SpringIOC容器可以自动装配Bean,选哟做的是仅仅是在的autowire水下那个里指定自动装配的模式 byTy...

spring_scope作用域和使用外部属性文件和spEL表达式

Spring_Bean的作用域 使用bean的scope属性来配置bean的作用域     singleton:默认值              容器初始化时就已经创建bean实例(还未获取bean...

spring spEL 表达式详解

  • 2015-02-05 16:35
  • 16KB
  • 下载

spring中的spel表达式语言

spring in action第三版读书笔记 spring3.0引入了spring expression language(spel)语言,通过spel我们可以实现 1.通过bean的id对...

Spring3表达式语言(SpEL)学习笔记

Spring Excpression Language (SpEL)语言支持在运行时操作和查询对象,其语法类似统一的EL语言,但是SpEL提供了额外的功能。 1、文本表达式 2、布尔类和关系操作 ...

Spring学习笔记(六) Bean的作用域 & Spel 表达式

Bean的作用域 Bean的作用域,通过scope属性来控制。 默认为singleton,意味着使用的是单例对象,容器初始化的时候,即创建实例,全程就使用这个对象 设置为prototype,则在...

Spring 之SPEL表达式

Web开发中,少不了EL表达式从最入门的struts2中的,或者jsp之中的。这些表达式有一个特点就是从特定的Context中获取值,并将原本的文本替换。达到一个以模板为基础生成不同的内容的的功能。 ...

Spring3表达式语言(SpEL)学习笔记

最新地址请访问:http://leeyee.github.io/blog/2011/06/19/spring-expression-language Spring Excpression Lan...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)