关闭

Spring Cache抽象-使用SpEL表达式

标签: springcachespel
1222人阅读 评论(0) 收藏 举报
分类:

概述

在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
0
0
查看评论

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

到目前为止,我们为Bean 的属性和构造器参数装配的所有东西都是在Spring 的XML 配置文件中静态定义的。 id = "yoona" class = "com.sjf.bean.Student"> name="name"...
  • SunnyYoona
  • SunnyYoona
  • 2016-02-05 19:39
  • 3749

5、Spring SPEL使用之--在XML中使用SPEL

SPEL(Spring Expression Language)即Spring3中功能丰富强大的表达式语言,简称SpEL。SpEL是类似于OGNL和JSF EL的表达式语言,能够在运行时构建复杂表达式,存取对象属性、对象方法调用等。所有的SpEL都支持XML和Annotation两种方式,格式:#{...
  • jaune161
  • jaune161
  • 2016-05-22 17:33
  • 3026

spring之SpEL表达式

1.什么是SpEL表达式 SpEL表达式语言是一种表达式语言,是一种可以与一个基于spring的应用程序中的运行时对象交互的东西。有点类似于ognl表达式。总得来说SpEL表达式是一种简化开发的表达式,通过使用表达式来简化开发,减少一些逻辑、配置的编写。 2.使用XML方式实现SpEL表达式
  • ya_1249463314
  • ya_1249463314
  • 2017-04-03 15:19
  • 3456

缓存注解 Cachealble CacheEvict CachePut 浅谈,以及conditions和ulessSpEL表达式

在之前,我们采用的进程缓存可以是ConcurrentHashMap,加了锁的LinkedHashMap,WeakHashMap,以及Google guava Cache,需要自己定义或者实现缓存过期处理以及LRU等。这些本地有以下缺点:①和自己业务逻辑耦合度高。②难以整合其他的缓存方案。 sprin...
  • kkgbn
  • kkgbn
  • 2016-08-04 10:14
  • 2063

spring@value注入spel表达式

用于注入SpEL表达式,可以放置在字段方法或参数上,使用方式如下: @Value(value = "SpEL表达式")   字段、方法、参数   @Value(value = "#{...
  • mggwct
  • mggwct
  • 2016-04-11 20:56
  • 313

Spring表达式语言:SpEL语法

SpEL表达式语言详解
  • VipMao
  • VipMao
  • 2016-06-15 11:19
  • 3766

SpEL support in Spring Data JPA @Query definitions

https://spring.io/blog/2014/07/15/spel-support-in-spring-data-jpa-query-definitions Spring Data JPA allows manually defining the query to be ex...
  • cover1231988
  • cover1231988
  • 2017-07-12 09:37
  • 286

Spring:加载外部properties文件、spEL表达式赋值

如果需要加载多个properties文件,就写在一起,之间使用逗号隔开。          -->                &...
  • xxssyyyyssxx
  • xxssyyyyssxx
  • 2015-12-08 15:21
  • 1223

Spring 表达式语言之 SpEL 语法

5.3 SpEL语法 5.3.1 基本表达式 一、字面量表达式: SpEL支持的字面量包括:字符串、数字类型(int、long、float、double)、布尔类型、null类型。 类型 示例 字符串 String str1 = parser.parseExpressio...
  • u014351782
  • u014351782
  • 2016-07-14 15:19
  • 3808

Spring Spel 与 Placeholder

Spring中Placeholder的使用方法
  • cloud_ll
  • cloud_ll
  • 2016-04-23 17:49
  • 596
    个人资料
    • 访问:1303108次
    • 积分:18974
    • 等级:
    • 排名:第559名
    • 原创:459篇
    • 转载:0篇
    • 译文:5篇
    • 评论:149条
    WeChat
      欢迎关注我的公众号,干货只有干货,还有更多惊喜和资源在等着你
    博客专栏