日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring学习-- SpEL表达式

發布時間:2024/2/28 javascript 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring学习-- SpEL表达式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉載自?https://www.cnblogs.com/goodcheap/p/6490896.html

目錄

Spring 表達式語言(簡稱SpEL):是一個支持運行時查詢和操作對象圖的強大的表達式語言。

語法類似于 EL:SpEL 使用 #{...} 作為定界符 , 所有在大括號中的字符都將被認為是 SpEL , SpEL 為 bean 的屬性進行動態賦值提供了便利。

通過 SpEL 可以實現:

  • 通過 bean 的 id 對 bean 進行引用。
  • 調用方式以及引用對象中的屬性。
  • 計算表達式的值
  • 正則表達式的匹配。
1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> 5 6 <bean id="car" class="com.itdjx.spring.spel.Car"> 7 <property name="brand" value="#{'瑪莎拉蒂'}"></property> 8 <property name="price" value="#{32000.78}"></property> 9 <property name="perimeter" value="#{T(java.lang.Math).PI * 75.8f}"></property> 10 </bean> 11 12 <bean id="person" class="com.itdjx.spring.spel.Person"> 13 <property name='name' value='#{"華崽兒"}'></property> 14 <property name="age" value="#{25}"></property> 15 <property name="marriage" value="#{car.price > 400000 and age > 30}"></property> 16 <property name="car" value="#{car}"></property> 17 <property name="socialStatus" value="#{car.price > 30000 ? '金領' : '白領'}"></property> 18 <property name="address" value="#{address.province + '省' + address.city + '市' + address.area + '區'}"/> 19 </bean> 20 21 <bean id="address" class="com.itdjx.spring.spel.Address"> 22 <property name="province" value="#{'遼寧'}"/> 23 <property name="city" value="#{'大連'}"/> 24 <property name="area" value="#{'沙河口'}"/> 25 </bean> 26 27 </beans> 1 package com.itdjx.spring.spel; 2 3 /** 4 * @author Wáng Chéng Dá 5 * @create 2017-03-02 13:26 6 */ 7 public class Car { 8 9 private String brand; 10 11 private double price; 12 13 private String perimeter; 14 15 public String getBrand() { 16 return brand; 17 } 18 19 public void setBrand(String brand) { 20 this.brand = brand; 21 } 22 23 public double getPrice() { 24 return price; 25 } 26 27 public void setPrice(double price) { 28 this.price = price; 29 } 30 31 public String getPerimeter() { 32 return perimeter; 33 } 34 35 public void setPerimeter(String perimeter) { 36 this.perimeter = perimeter; 37 } 38 39 @Override 40 public String toString() { 41 return "Car{" + 42 "brand='" + brand + '\'' + 43 ", price=" + price + 44 ", perimeter='" + perimeter + '\'' + 45 '}'; 46 } 47 } 1 package com.itdjx.spring.spel; 2 3 /** 4 * @author Wáng Chéng Dá 5 * @create 2017-03-02 13:48 6 */ 7 public class Address { 8 9 private String province; 10 11 private String city; 12 13 private String area; 14 15 public String getProvince() { 16 return province; 17 } 18 19 public void setProvince(String province) { 20 this.province = province; 21 } 22 23 public String getCity() { 24 return city; 25 } 26 27 public void setCity(String city) { 28 this.city = city; 29 } 30 31 public String getArea() { 32 return area; 33 } 34 35 public void setArea(String area) { 36 this.area = area; 37 } 38 39 @Override 40 public String toString() { 41 return "Address{" + 42 "province='" + province + '\'' + 43 ", city='" + city + '\'' + 44 ", area='" + area + '\'' + 45 '}'; 46 } 47 } 1 package com.itdjx.spring.spel; 2 3 /** 4 * @author Wáng Chéng Dá 5 * @create 2017-03-02 13:27 6 */ 7 public class Person { 8 9 private String name; 10 11 private int age; 12 13 private boolean marriage; 14 15 private Car car; 16 17 private String socialStatus; 18 19 private String address; 20 21 public String getName() { 22 return name; 23 } 24 25 public void setName(String name) { 26 this.name = name; 27 } 28 29 public int getAge() { 30 return age; 31 } 32 33 public void setAge(int age) { 34 this.age = age; 35 } 36 37 public boolean isMarriage() { 38 return marriage; 39 } 40 41 public void setMarriage(boolean marriage) { 42 this.marriage = marriage; 43 } 44 45 public Car getCar() { 46 return car; 47 } 48 49 public void setCar(Car car) { 50 this.car = car; 51 } 52 53 public String getSocialStatus() { 54 return socialStatus; 55 } 56 57 public void setSocialStatus(String socialStatus) { 58 this.socialStatus = socialStatus; 59 } 60 61 public String getAddress() { 62 return address; 63 } 64 65 public void setAddress(String address) { 66 this.address = address; 67 } 68 69 @Override 70 public String toString() { 71 return "Person{" + 72 "name='" + name + '\'' + 73 ", age=" + age + 74 ", marriage=" + marriage + 75 ", car=" + car + 76 ", socialStatus='" + socialStatus + '\'' + 77 ", address='" + address + '\'' + 78 '}'; 79 } 80 } package com.itdjx.spring.spel;import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext;/*** @author Wáng Chéng Dá* @create 2017-03-02 13:42*/ public class Main {public static void main(String[] args) {ApplicationContext app = new ClassPathXmlApplicationContext("spel-beans.xml");Person person = (Person) app.getBean("person");System.out.println(person);} }

?

控制臺輸出:

Person{name='華崽兒', age=25, marriage=false, car=Car{brand='瑪莎拉蒂', price=32000.78, perimeter='238.13273272948624'}, socialStatus='金領', address='遼寧省大連市沙河口區'}

?

?SpEL 字面量:

  • 整數:#{8}
  • 小數:#{8.8}
  • 科學計數法:#{1e4}
  • String:可以使用單引號或者雙引號作為字符串的定界符號。
  • Boolean:#{true}

SpEL引用bean , 屬性和方法:

  • 引用其他對象:#{car}
  • 引用其他對象的屬性:#{car.brand}
  • 調用其它方法 , 還可以鏈式操作:#{car.toString()}
  • 調用靜態方法靜態屬性:#{T(java.lang.Math).PI}

?SpEL支持的運算符號:

  • 算術運算符:+,-,*,/,%,^(加號還可以用作字符串連接)
  • 比較運算符:< , > , == , >= , <= , lt , gt , eg , le , ge
  • 邏輯運算符:and , or , not , |
  • if-else 運算符(類似三目運算符):?:(temary), ?:(Elvis)
  • 正則表達式:#{admin.email matches '[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,4}'}

總結

以上是生活随笔為你收集整理的Spring学习-- SpEL表达式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。