Spring EL method invocation example

Spring expression language (SpEL) allow developer uses expression to execute method and inject the method returned value into property, or so called “SpEL method invocation“.

Spring EL in Annotation

See how to do Spring EL method invocation with @Value annotation.


package com.mkyong.core;

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

@Component("customerBean")
public class Customer {

	@Value("#{'mkyong'.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.mkyong.core;

import org.springframework.stereotype.Component;

@Component("priceBean")
public class Price {

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

}

Output


Customer [name=MKYONG, amount=99.99]
Explanation

Call the ‘toUpperCase()‘ method on the string literal.


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

Call the ‘getSpecialPrice()‘ method on bean ‘priceBean‘.


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

Spring EL in XML

This is the equivalent version in bean definition XML file.


<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.mkyong.core.Customer">
		<property name="name" value="#{'mkyong'.toUpperCase()}" />
		<property name="amount" value="#{priceBean.getSpecialPrice()}" />
	</bean>
 
	<bean id="priceBean" class="com.mkyong.core.Price" />
	
</beans>

Output


Customer [name=MKYONG, amount=99.99]

Download Source Code

About the Author

author image
mkyong
Founder of Mkyong.com, love Java and open source stuff. Follow him on Twitter. If you like my tutorials, consider make a donation to these charities.

Comments

avatar
6 Comment threads
1 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
6 Comment authors
AvinashRudi KershawRavi PrakashSurath Mukherjeepratul baheti Recent comment authors
newest oldest most voted
Avinash
Guest
Avinash

Can we do like this ?

Ravi Prakash
Guest
Ravi Prakash

What if the method we are calling from SPEL throws an exception, how to handle that ?

Rudi Kershaw
Guest
Rudi Kershaw

I think that if you are calling a method from within your view that throws an exception then you are putting too much business logic there. This is probably something that should be handled by the model or controller.

Surath Mukherjee
Guest
Surath Mukherjee

How to send input to a bean for an output

pratul baheti
Guest
pratul baheti

can you give example on difference between @bean and @component. I got confused after studying your above tutorial. I mean in all the previous tuts you used @bean to create bean but in this example you used @component to create a bean.

Ash
Guest
Ash

Really very helpful tutorials.
Thanks a lot Sir.

trackback
Spring Tutorial

[…] language (EL).Spring EL bean reference example Reference bean, bean property using a dot (.) symbol.Spring EL method invocation example Call bean method in direclty.Spring EL operators example Spring EL suppots most of the standard […]