Spring EL方法呼叫範例


Spring表示式語言(使用SpEL)允許開發人員使用表示式來執行方法和將返回值以注入的方式到屬性,或叫作「使用SpEL方法呼叫」。

Spring EL在注解的形式

了解如何實現Spring EL方法呼叫與@Value注釋。
package com.yiibai.core;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

@Component("customerBean")
public class Customer {

	@Value("#{'yiibai'.toUpperCase()}")
	private String name;

	@Value("#{priceBean.getSpecialPrice()}")
	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 + "]";
	}

}
package com.yiibai.core;

import org.springframework.stereotype.Component;

@Component("priceBean")
public class Price {

	public double getSpecialPrice() {
		return new Double(199.09);
	}

}

輸出

Customer [name=YIIBAI, amount=199.09]

一點解釋

在字串文字上呼叫 toUpperCase()方法。
@Value("#{'yiibai'.toUpperCase()}")
private String name;

在 ‘priceBean‘ Bean上呼叫getSpecialPrice() 方法

@Value("#{priceBean.getSpecialPrice()}")
private double amount;

Spring EL在XML的形式

請參閱在XML檔案定義bean的等效版本。
<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-3.0.xsd">
 
	<bean id="customerBean" class="com.yiibai.core.Customer">
		<property name="name" value="#{'yiibai'.toUpperCase()}" />
		<property name="amount" value="#{priceBean.getSpecialPrice()}" />
	</bean>
 
	<bean id="priceBean" class="com.yiibai.core.Price" />
	
</beans>

輸出

Customer [name=YIIBAI, amount=199.09]
下載程式碼 –  http://pan.baidu.com/s/1mhdwodU