SpEL使用示例
<bean id="chineseA" class="com.xxx.bean.Chinese" scope="prototype"> <constructor-arg value="Li Lei"/> <constructor-arg value="15"/> <constructor-arg ref="dogA"/> </bean> <!-- SpEL示例 --> <bean id="americanB" class="com.xxx.bean.American"> <!-- 直接赋值 --> <property name="name" value="#{'Mike Sui'}" /> <!-- T()访问类的静态域与运算符的使用 --> <property name="age" value="#{T(java.lang.Math).random() * 10}" /> <!-- 使用其他类实例成员赋值 --> <property name="pet" value="#{americanA.pet}" /> </bean> <bean id="americanC" class="com.xxx.bean.American"> <property name="name" value="#{americanB.name}" /> <!-- 运算符的使用 --> <!-- 包括 gt(>), eq(=), lt(<), ge(>=), le(<=) --> <!-- 逻辑运算符 and, or, not --> <property name="age" value="#{(americanB.age gt 10) and (americanB.age le 18)? americanB.age : 10}" /> <!-- 正则的使用 --> <property name="validEmail" value="#{americanB.email matches '[a-zA-Z0-9._]+@[a-zA-Z0-9.]+\\.com'}" /> <!-- 安全取值操作符 "?.", 为NULL是不会执行下步操作 --> <property name="petName" value="#{americanA.getPet()?.getName}" /> </bean> <!-- util 集合的使用 --> <util:list id="cities"> <bean class="com.xxx.bean.City" p:name="Beijing" p:population="1500000" /> <bean class="com.xxx.bean.City" p:name="Shanghai" p:population="2000000" /> <bean class="com.xxx.bean.City" p:name="Shaoguan" p:population="400000" /> <bean class="com.xxx.bean.City" p:name="Hangzhou" p:population="800000" /> </util:list> <bean id="chinese" class="com.xxx.bean.Chinese"> <!-- 集合成员的访问 --> <property name="city" value="#{cities[2]}" /> <property name="country" value="#{countries['Dallas']}" /> <!-- 集合成员的过滤 ".?[]" 操作符的使用 --> <!-- 筛选人口多余1000000的城市 --> <property name="myCities" value="#{cities.?[population gt 1000000]}" /> <!-- 获取集合中所有成员的某个属性 ".![]" 操作符的使用 --> <property name="cityNames" value="#{cities.?[population gt 1000000].![name]}" /> <!-- 获取集合中第一个和最后一个匹配项 ".^[] .$[]的使用" --> <property name="firstCity" value="#{cities.^[population gt 1000000]}" /> <property name="lastCity" value="#{cities.$[population gt 1000000]}" /> </bean>