En la versión 3 de Spring podemos encontrar una nueva característica y es el SpEL (Spring Expression Language). Es una nueva forma para inyectar valores a las propiedades de los beans.
Por ejemplo, todo hijo hereda el apellido del padre:
Al ejecutar el siguiente codigo java:
ApplicationContext appContext =
new ClassPathXmlApplicationContext("classpath:spring3-config.xml");
Persona padre = (Persona) appContext.getBean("padre");
Persona hijo = (Persona) appContext.getBean("hijo");
System.out.println("Apellido del padre = " + padre.getApellido());
System.out.println("Apellido del hijo = " + hijo.getApellido());
El resultado es el siguiente:
Apellido del padre = Lara
Apellido del hijo = Lara
Spring evalúa la expresión "#{padre.apellido}" y la traduce a una llamada el método "getApellido" del bean "padre". El resultado es inyectado a la propiedad "apellido" del bean "hijo". Esta nueva característica del Spring 3 es muy interesante ya que no solo permite acceder a propiedades de otros beans, también llamar metodos de otros beans, obtener valores de propiedades del sistema y hasta llamar métodos estáticos.
Veamos algunos ejemplos:
- Acceder a propiedades del sistema: #{ systemProperties['valor.systema]}.
- Llamar métodos estáticos: #{ T(java.lang.Math).random() }.
- Acceder a elementos de un arreglo: #{ arreglo[1] }.
- Acceder a elementos de un mapa: #{ mapa['key'] }.
- Llamar a métodos (con todo y argumentos): #{ 'cadena'.substring(2, 3) }.
- Operaciones aritméticas: #{ (2 + 2) * 5 }
- Crear objetos: #{ new String('Hola') }.
En fin, hay muchas otras cosas mas que se pueden hacer con esta nueva característica que viene con Spring 3
Pueden leer mas en la documentación de referencia aquí.