Spring SpEL表达式
对<property>
进行统一编程,所有的内容都使用value
<property name="" value="#{表达式}">
#{123}、#{'jack'} : 数字、字符串
#{beanId} :另一个bean引用
#{beanId.propName} :操作数据
#{beanId.toString()} :执行方法
#{T(类).字段|方法} :静态方法或字段
- 配置
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<!--
<property name="cname" value="#{'jack'}"></property>
<property name="cname" value="#{personId.pname.toUpperCase()}"></property>
通过另一个bean,获得属性,调用的方法
<property name="cname" value="#{customerId.cname?.toUpperCase()}"></property>
?. 如果对象不为null,将调用方法
-->
<bean id="personId" class="com.cc.study.di.Person" >
<property name="pname" value="#{personId.pname?.toUpperCase()}"></property>
<property name="age" value="#{T(java.lang.Math).abs(-11)}"></property>
</bean>
</beans>
- 测试
@Test
public void demo01(){
String xmlPath = "spel.xml";
ApplicationContext applicationContext = new ClassPathXmlApplicationContext(xmlPath);
Person person = (Person) applicationContext.getBean("personId");
System.out.println(person.getPname());
System.out.println(person.getAge());
}