Spring之SpEL动态赋值

版权声明:本文为博主原创文章,未经博主允许不得转载。 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}}

猜你喜欢

转载自blog.csdn.net/qq_38409944/article/details/82684507