版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_38409944/article/details/82684507
spEL:如果是字面值,用spel的意义不大 动态赋值
语法:
value="#{}"
作用:
可以调用指定类的静态方法或者静态属性
可以引用其他Bean
可以引用其他Bean的属性
可以调用其他方法,还可以链式操作
还支持算术运算法 还可以作字符串连接 还可以比较运算符等
SpEL引用类的静态变量,或者静态方法,也可以引用其他Bean:
类:
static String a="静态值";
public static String getA(){
System.out.println("调用静态方法,返回静态值");
return a;
}
xml配置:
<bean id="getHello" class="hello.Hello" p:name="你好"></bean>
<!--使用SpEL引用类的静态变量,或者静态方法,也可以引用其他Bean 值是Bean的id-->
<bean id="person" class="hello.Person" p:name="#{T(hello.Hello).a}" p:hello="#{getHello}"></bean>
输出:
调用静态方法,返回静态值
Person{name='静态值', hello=Hello{name='你好', numberInt=0, numberDouble=0.0}}
总结:
调用其他类的静态变量的时候实际调用了该属性的get变量方法,
所以必须有get变量这个方法,并且是public类型的
也可以直接调用其他Bean类的静态方法,如:
p:name="#{T(hello.Hello).getA()}"
注意 那个静态属性或者静态方法所在的类要用T包裹起来。
调用其他Bean的属性:
<bean id="getHello" class="hello.Hello" p:name="你好"></bean>
<bean id="person" class="hello.Person" p:name="#{getHello.name}" p:hello="#{getHello}"></bean>
使用运算符:在SpEL中使用运算符
<bean id="getHello" class="hello.Hello" p:name="你好" p:numberInt="12"></bean>
<bean id="person" class="hello.Person" p:name="#{getHello.numberInt>12?'大于12':'小于12'}" p:hello="#{getHello}"></bean>
输出:
Person{name='小于12', hello=Hello{name='你好', numberInt=12, numberDouble=0.0}}