这篇博客讲一下SpEL的使用和Bean的声明周期
Spel的使用
Spring 表达式语言(简称SpEL):是一个支持运行时查询和操作对象图的强大的表达式语言。
语法类似于 EL:SpEL 使用 #{…} 作为定界符,所有在大框号中的字符都将被认为是 SpEL
SpEL 为 bean 的属性进行动态赋值提供了便利
通过 SpEL 可以实现:
通过 bean 的 id 对 bean 进行引用
调用方法以及引用对象中的属性
计算表达式的值
正则表达式的匹配
- 为bean 赋值 字面量
<property name="age" value=#{18} /> # 为整数型赋值
<property name="price" value=#{188.36} /> # 为小数型赋值
<property name="name" value=#{'小芳'} /> # 为String类型的属性赋值,赋值的内容需要使用 ' ' 单引号引起来
- 引用 Bean、属性、方法
<!-- 使用 value 属性和SpEL指定Bean之间的关系,相当于 ref 属性。-->
<property name="car" value=#{car1} />
<!-- 引用其他对象的属性 -->
<property name="price" value=#{car.price} />
<!-- 调用其他 bean 的方法 -->
<property name="sffix" value="#{ car.toString() }" />
- 支持运算符号
<!-- 支持 +, -, *, /, %, ^ -->
<property name="total" value=#{123+123} />
<property name="total" value=#{123*123} />
<property name="total" value=#{123/123} />
<!-- 支持字符串连接 -->
<property name="name" value="#{car.name + ' ' + car.name }" >
<!-- 比较运算符: <, >, ==, <=, >=, lt, gt, eq, le, ge -->
<propeyty name="equal" value="#{100==100}" />
<!-- 逻辑运算符号: and, or, not, | -->
<property name="xxx" value="#{car.price == 100 and car.name == 'dazhong'}"/>
<!--应用静态类的静态方法 -->
<property name="xxxx" value="#{T(java.lang.Math).PI }" />