zoukankan      html  css  js  c++  java
  • Spring学习记录(七)---表达式语言-SpEL

    SpEL---Spring Expression Language:是一个支持运行时查询和操作对象图表达式语言、使用#{...}作为定界符,为bean属性动态赋值提供了便利。

    对于普通的赋值,用SpEL也可以,但意义不大,如:

    1  整数:<property name="count" value="#{5}">
    2  小数:<property name="frequency" value="#{89.5}">
    3  字符串:<property name="name" value="#{"Evan"}"> //要用引号引起来
    4  布尔值:<property name="enabled" value="#{false}">

     ②引用Bean、属性和方法

     1 <bean id="car" class="com.guigu.spring.autowire.Car"
     2     p:brand="Audi" p:price="200000"></bean>
     3   <!--引用其他对象-- ,相当于 ref="">
     4 <bean id="person" class="com.guigu.spring.autowire.Person"
     5     p:name="Tom" p:car="#{car}"></bean>
     6   <!--引用其他对象的属性-->
     7 <bean id="car2" class="com.guigu.spring.autowire.Car"
     8     p:brand="Baoma" p:price="#{car.price}"></bean>
     9   <!--引用其他对象的方法,还可以链式操作-->
    10  <bean id="car3" class="com.guigu.spring.autowire.Car" p:toString="#{car.toString()}">
    11  <bean id="car3" class="com.guigu.spring.autowire.Car" p:toString="#{car.toString().toUpperCase()}">

     支持运算符号

     算数运算符:+ - * /

     字符串连接符: p:name="#{fullname.first + " " + fullname.lastname}"

     比较运算符: > < == >= ...

     逻辑运算符:and、or、not

     if-else运算符:<property name="answer" value="#{Main.answer()=='A'?A:B}">

     正则表达式:matches

     ④调用静态方法或属性:用T()调用一个类的静态方法,它将返回一个Class Object,然后再调用相应的方法或属性

    1  <bean id="circle" class="com.guigu.spring.autowire.Circle" >
    2    // 调用了PI属性
    3  <property name="zhouchang" value="#{T(java.lang.Math).PI}"></property>
    4 
    5  </bean>

     这样,xml的功能有多了,可以直接做一些调用和判断。

     文章问学习记录,还没有深入学习。若有错误,望指正

  • 相关阅读:
    【NET CORE微服务一条龙应用】第一章 网关使用与配置
    111
    test
    再来一个测试
    测试博客
    flutter 中的json解析
    关于flutter -app开发过程中的问题及解决方式总结
    使用Mybatis-plus通过自定义Sql查询只有主键为null的问题
    Centos 6中keepalived作为服务启动
    CentOS6 开放、关闭防火墙相关端口命令
  • 原文地址:https://www.cnblogs.com/ooooevan/p/5803813.html
Copyright © 2011-2022 走看看