zoukankan      html  css  js  c++  java
  • spring之spring表达式语言:SpEL

    (1)spring表达式语言是一个支持运行时查询和操作对象的表达式语言。

    (2)语言类似于EL:SpEL使用#{...}作为定界符。所有在大括号中的字符串均被认为是SpEL。

    (3)SpEL为bean的属性进行动态赋值提供了便利。

    (4)通过SpEL可以实现:

    • 通过Bean的id对Bean进行引用
    • 调用方法及引用对象的属性
    • 计算表达式的值
    • 正则表达式匹配

    字面量的表示:

    • 整型:#{5}
    • 小数:#{3.45}
    • 科学计数法:#[1e4]
    • 字符串:可以使用单引号或双引号早味字符串的定界符:#{'tom'},#{"tom"}
    • 布尔值:#{false}

    SpEL支持的运算符号:+ - * / % ^ < > == <= >= lt gt eq le ge and or not | (?:) if-else 正则表达式等等

    调用静态属性和方法:通过T()

    以下代码均忽略类中的getter、setter和to_string方法。

    Car.java

    package com.gong.spring.beans.spel;
    
    public class Car {
        
        public Car() {
        }
    
        public Car(String name) {
            this.name = name;
        }
        private String name;
        //轮胎周长
        private double tyrePerimeter;
        private double price;
    }

    Address.java

    package com.gong.spring.beans.spel;
    
    public class Address {
        private String city;
        private String street;
    }

    Student.java

    package com.gong.spring.beans.spel;
    
    public class Student {
        
        private String name;
        private int age;
        private double score;
        private String city;
        private String info;
        private Car car;
        private Address address;
    }

    beans-spel.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:p="http://www.springframework.org/schema/p"
        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    
        <bean id="car" class="com.gong.spring.beans.spel.Car" p:name="baoma"
       p:tyrePerimeter="#{T(java.lang.Math).PI*80}"></bean> <bean id="address" class="com.gong.spring.beans.spel.Address" p:city="武汉" p:street="#{'络南街道'}"></bean> <bean id="student" class="com.gong.spring.beans.spel.Student" p:name="tom" p:age="#{12}" p:score="#{99.00}"> <!-- 使用spel引用其它的bean --> <property name="car" value="#{car}"></property> <!-- 使用spel引用其它bean的属性 --> <property name="city" value="#{address.city}"></property> <!-- 使用spel运算符 ,进行动态赋值--> <property name="info" value="#{car.price >300000 ? '有钱' : '没钱'}"></property> </bean> </beans>

    Main.java

    package com.gong.spring.beans.spel;
    
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    public class Main {
        public static void main(String[] args) {
            //1.创建spring的IOC容器对象
            ApplicationContext ctx = new ClassPathXmlApplicationContext("beans-spel.xml");
            //2.从容器中获取Bean实例
            Student student = (Student) ctx.getBean("student");
            System.out.println(student.toString());
        }
    }

    部分输出:

  • 相关阅读:
    Hybrid 实验
    Access+Trunk 配置
    JS 超类和子类
    javascript高级程序设计第3版——第一章概括
    js 获取getElementsTagName()方法返回值的内容
    js 数组的pop(),push(),shift(),unshift()方法小结
    js parseInt()与Number()区别
    HTML中引用外部JS文件失效原因
    TP5报错 User qdm813229266 already has more than 'max_user_connections' active connections 解决办法
    微信内打开链接,跳转到公众号关注页面
  • 原文地址:https://www.cnblogs.com/xiximayou/p/12152800.html
Copyright © 2011-2022 走看看