zoukankan      html  css  js  c++  java
  • SpEL

    Spring3引入了Spring表达式语言(Spring Expression Language),用来将值装配到bean的构造器和属性中,这个过程中的表达式的值会在运行时进行计算

    SpEL的特性包括

    • 使用Bean的ID来引用Bean
    • 调用方法/访问对象的属性
    • 对值进行算数、关系、逻辑运算
    • 正则表达式的匹配
    • 集合操作

    SpEL表达式放在#{}的结构中,{}中的内容称为表达式体

    1,表示字面值

      使用字面值,可以表示整形、浮点、字符串、布尔,其中字符串用单引号括起来

    2,引用其他Bean、属性、方法

    •  #{B}                  找到id=B 的Bean
    •  #{B.Field}         得到id为B的Bean的name属性
    •  #{B.method()}  引用id=B的Bean的方法
      如果方法又返回值,还能继续调用方法,比如#{B.method().toUpperCase()} ,但是如果method的返回值为空,就会出现问题。可以使用?.的符号
      #{B.method()?.toUpperCase()}这样如果前面的值是null,就会直接返回null,不会报出空指针异常

    3,访问类作用域的方法和常量

          注意,类没有装配为Bean,应该使用类作用域来访问。使用T()运算符,例如T(java.lang.Math).PI,这里访问到的都是一些静态的方法和属性。

    SqEL运算符

    •       算数: + - * / % ^   其中+对于字符串是连接的作用
    •       比较:> < ==  >= <=  gt lt eq ge le
    •       逻辑:and or not |
    •      条件运算  ?:
    •      正则表达式maches

    三元运算:

    1,#{circle.radious>100?'A':'B'}

    2,检查null的值,如果为null给出一个默认值     #{str?:“default str”} 如果str为空,返回后面的,否则返回str本身

    正则表达式

    #{admin.email  matches '[A-Za-z0-9.+-]+@[A-Za-z0-9.-]+\.(com|net)'}  得到的是一个boolean值

    集合数组相关

    集合操作,包括集合的获取过滤等等

    #{joke.songs[12].title}

    #{'this is the test'[3]}

    .?[...] 过滤,找到符合条件的集合                       #{joke.songs.?[name eq 'lalala']}

    .^[...] 找到集合中第一个与条件匹配的元素          

    .$[...]找到集合中最后一个与条件匹配的元素

    .![....]把集合中的指定数据投影到另外一个集合中,返回的是一个集合

    @Value("#{T(com.B).strings.![length()]}")
        private ArrayList<Integer> collec1;   //把集合的每一数据的长度投影到一个新的集合中来
    @Value("#{T(com.B).strings.$[length()==6]?:'oh ti is null'}")
    找到String中长度为6的最后一个元素,如果为空,就返回'oh ti is null'
  • 相关阅读:
    Qt 布局之二:水平、垂直布局的使用详解
    Qt 布局之一:布局初探
    [数据库] SQL 语法之进阶篇
    [数据库] SQL 语法之基础篇
    看图深入理解单链表的反转
    [数据结构
    (原)tslib的交叉编译
    (转) s-video vs. composite video vs. component video 几种视频格式详细说明和比较
    (转)BT1120接口及协议
    (转)Ubuntu12.04上NFS Server安装使用过程
  • 原文地址:https://www.cnblogs.com/Coder-Pig/p/7245369.html
Copyright © 2011-2022 走看看