使用SpringEL表达式进行方法调用
原文链接:http://www.yiidian.com/spring/spring-el-method.html
SpEL允许开发者用El运行方法函数,并且允许将方法返回值注入到属性中。
一、编写Bean类
TestMethod类
package com.yiidian;
/**
*
* @author http://www.yiidian.com
*
*/
public class TestMethod {
public Double getPrice(){
return 199.99D;
}
}
Customer类:
package com.yiidian.domain;
import java.io.Serializable;
/**
*
* @author http://www.yiidian.com
*
*/
public class Customer implements Serializable{
private String name;
private Double amount;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Double getAmount() {
return amount;
}
public void setAmount(Double amount) {
this.amount = amount;
}
@Override
public String toString() {
return "Customer [name=" + name + ", amount=" + amount + "]";
}
}
二、配置applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:p="http://www.springframework.org/schema/p"
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">
<bean id="testMethod" class="com.yiidian.TestMethod"></bean>
<bean id="customer" class="com.yiidian.domain.Customer">
<property name="name" value="#{'yiidian'.toUpperCase()}"/>
<property name="amount" value="#{testMethod.getPrice()}"/>
</bean>
</beans>
注意:
#{'yiidian'.toUpperCase()}
: 这句代表调用字符串toUpperCase()方法#{testMethod.getPrice()}
: 这句代表调用TestMehod对象的getPrice()方法
三、编写测试类
package com.yiidian.test;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.yiidian.domain.Customer;
/**
* @author http://www.yiidian.com
*
*/
public class Demo1 {
@Test
public void test1() {
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
Customer customer = (Customer)context.getBean("customer");
System.out.println(customer);
}
}
四、运行结果
源码下载:http://pan.baidu.com/s/1bp31pSV
欢迎关注我的公众号::一点教程。获得独家整理的学习资源和日常干货推送。
如果您对我的系列教程感兴趣,也可以关注我的网站:yiidian.com