Después de la lista de las anotaciones mas importantes/frecuentes en Spring, creo que ha llegado el momento de empezarlas a utilizar. Insisto en que anotaciones puede que no sea la solución completa, y que para según que definiciones, deberemos acudir al XML. pero si que es cierto que nos facilita mucho la vida; de forma que vamos a ver que es lo que nos ofrece.
Iniciamos un nuevo proyecto de Spring, utilizando el IDE que instalamos anteriormente (STS). Para ello, seleccionamos «File»:
Si en la lista no os aparece Spring, haced clic en «Project» y en la nueva pantalla:
Pulsamos en «Spring Project» y nos aparece la pantalla para la creación del proyecto:
Y allí, le podemos indicar el nombre del proyecto,y el tipo, que de momento vamos a dejar como «Spring MVC».
Si es la primera vez, os pedirá autorización para descargar las plantillas, y luego nos pedirá el nombre del paquete en el que vamos a montar el aplicativo; nosotros lo haremos en com.rf.anotaciones.
y ya podemos pulsar en «Finish», para que se cierre el asistente y podamos empezar a codificar.
El proyecto va a ser el reescribir nuestro conocido «Hola Mundo» para web, pero utilizando anotaciones y configuración desde Java.
Nuestro IDE nos habrá creado dentro del paquete principal que hemos indicado, un fichero llamado «HomeController.java», que queda definido como controlador por defecto, osea que será el que se llamara cuando no indiquemos pagina, gracias a la anotación «@RequestMapping»
Luego volveremos a él, ahora vamos a crear nuestra clase de trabajo, llamada HolaMundo.java
El contenido sera,como siempre muy sencillo,ya que solo queremos mostrar como funcionan las anotaciones.
Solo un atributo, privado como buen bean, y sus correspondientes métodos get y set, dejando que el método get deje rastro en la consola.
Si no utilizáramos anotaciones, ahora deberíamos ir a:
src/main/webapp/WEB-INF/spring/appServlet/servlet-context.xml
y definir el bean…os acordáis?:
<beans> holaMundo" class="com.rf.anotaciones.HolaMundo"/> </bean>
Pero como vamos a realizar las configuraciones con java, no pasaremos por ese fichero; en su lugar, vamos a crear un paquete nuevo, dentro de la carpeta src/main/java para guardar las configuraciones que necesitemos, para ello:
y llamamos al paquete, por ejemplo:
y dentro, podemos definir ya la pseudoclase HolaMundoConfig:
Su contenido, solo debe reflejar el método de creación del Bean, para el que utilizaremos la anotación «@Bean», y que en este caso es el constructor por defecto, con lo que quedará mas o menos así:
Podemos ir a modificar nuestro HomeController para que utilice la nueva clase:
Solo he tenido que hacer dos modificaciones, la primera (1) defino el objeto HolaMundo y dejo que Spring lo inyecte desde el bean con el mismo nombre (@Autowired), para lo cual, deberá encontrar la clase HolaMundoConfig y la clase HolaMundo, luego veremos como.
La segunda modificación utiliza la nueva clase, cargándole un mensaje, y luego recuperándolo, y enviandoselo a la vista.
Desde el punto de vista de codificación, todavía nos queda una cosa para hacer, que será modificar la vista para que acepte un segundo campo llamado «segundomensaje».
Abrimos la carpeta de vista, por defecto:
src/main/webapp/WEB-INF/spring/views
y modificamos el fichero «home.jsp»
para añadir la linea marcada.
Al haber utilizado un paquete distinto para la configuración, (definición de bean), deberemos indicar a Spring que debe escanear otro paquete, y para eso, si que necesitamos abrir :
src/main/webapp/WEB-INF/spring/appServlet/servlet-context.xml
y añadir ese paquete a los que ha de escanear.
Por ultimo, en Spring 3 aparece un error cuando se configura con clases Java:
CGLIB is required to process @Configuration classes
La solución está en abrir el fichero «pom.xml» y añadir la dependencia de «cglib», como:
Ahora si que hemos terminado, podéis «Run as Server»
con lo que veremos en nuestra pantalla:
En el articulo anterior vimos este mismo ejercicio para la linea de comando, yo os invito a que lo comparéis, y de paso a que probeis de reutilizar las clases desarrolladas con este ejemplo, para realizar el anterior. No os debería costar demasiado el adaptarlo.