Spring表达式语言:SpEL
--Spring表达式语言,简称:SpEL:是一个支持运行时查询和操作对象图的强大表达式语言。
--语言类似于EL:SpEL使用#{...}作为定界符,所有在大框中的字符都可以认为是SpEL。
--SpEL为Bean的属性进行动态赋值提供了便利。
--通过SpEL可以实现:
-通过bean的id对bean进行引用
-调用方法以及引用对象中的属性
-计算表达式的值
-正则表达式的匹配
实例:
三个类:Address,Car,Person
Address:
package com.xia.SpEL; public class Address { private String city; private String street; public Address() { super(); // TODO Auto-generated constructor stub } public String getCity() { return city; } public void setCity(String city) { this.city = city; } public String getStreet() { return street; } public void setStreet(String street) { this.street = street; } @Override public String toString() { return "Address [city=" + city + ", street=" + street + "]"; } }
Car:
package com.xia.SpEL; public class Car { private String cname; private double price; private double bring; //半径 public double getBring() { return bring; } public void setBring(double bring) { this.bring = bring; } public Car(String cname, double price) { super(); this.cname = cname; this.price = price; } @Override public String toString() { return "Car [cname=" + cname + ", price=" + price + ", bring=" + bring + "]"; } public Car() { super(); } public String getCname() { return cname; } public void setCname(String cname) { this.cname = cname; } public double getPrice() { return price; } public void setPrice(double price) { this.price = price; } }
Person:
package com.xia.SpEL; public class Person { private String name; private Car car; private String city; //用于引用Address bean中的city属性 private String info; //用于判断Car bean中的price,500000>price>300000 public String getCity() { return city; } public void setCity(String city) { this.city = city; } public String getInfo() { return info; } public void setInfo(String info) { this.info = info; } public Car getCar() { return car; } public void setCar(Car car) { this.car = car; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "Person [name=" + name + ", car=" + car + ", city=" + city + ", info=" + info + "]"; } }
配置文件:
<bean id="address" class="com.xia.SpEL.Address"> <!-- 使用spel表达式为属性一个子面值 --> <property name="city" value="#{'Beijing'}"></property> <property name="street" value="wudaokoou"></property> </bean> <bean id="car" class="com.xia.SpEL.Car"> <property name="cname" value="Audi" /> <property name="price" value="500000"></property> <!-- 使用SpEL 引用类的静态属性 --> <property name="bring" value="#{T(java.lang.Math).PI * 80}"></property> </bean> <bean id="person" class="com.xia.SpEL.Person"> <!-- 使用SpEL来引用其他的bean --> <property name="car" value="#{car}"></property> <property name="city" value="#{address.city}"></property> <!-- 在SpEL中使用运算符 --> <property name="info" value="#{car.price > 3000000 ? '金领':'白领'}"></property> <property name="name" value="Tom"></property> </bean>
输出:
Address [city=Beijing, street=wudaokoou] Car [cname=Audi, price=500000.0, bring=251.32741228718345] Person [name=Tom, car=Car [cname=Audi, price=500000.0, bring=251.32741228718345], city=Beijing, info=白领]

浙公网安备 33010602011771号