Como configurar una aplicacion basica Spring 2.5 con Maven 2
Hola java adictos,
Esta vez mostrare como crear una aplicación Spring con Maven ![]()
Descripción del Ejemplo
Se creara una aplicación que simplemente mostrar “Hello World with Spring
“. El mensaje sera obtenido de un bean llamado Greeting.
Vamos asumir que ya tienen instalado maven2, y java :), no sera necesario que bajen Spring ya que el mismo maven lo hara por ustedes.
A grandes rasgos, los pasos serán los siguientes:
- Crear aplicación base con maven.
- Editar pom.xml para adicionar dependencia base de Spring.
- Crear el bean Greeting.
- Crear archivo de contexto de aplicación de Spring.
- Modificar clase App y para probar funcionalidad.
Crear aplicación base con maven
Para esto vamos a hechar mano del comando mvn archetype:create. Nos posicionaremos en el folder donde deseemos trabajar y ejecutamos el siguiente comando:
mvn archetype:create -DgroupId=com.sumasoftware.hellospring -DartifactId=HelloSpring
Con la ejecución del anterior comando se creara un folder llamado HelloSpring
con la respectiva estructura de directorios de maven.
(Justo vi un post en otro blog sobre este aspecto, asi que pueden verlo para mas detalles)
Editar pom.xml para adicionar dependencia base de Spring
Ingresamos al folder llamado HelloSpring y editamos el archivo con cualquier editor a disposición.
Sera algo parecido a esto:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.sumasoftware.hellospring</groupId>
<artifactId>HelloSpring</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>HelloSpring</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
Dentro del tag <dependencies> adicionamos:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
<version>2.5.6</version>
</dependency>
Como verán solo vamos a utilizar el core de spring, osea la base. Esto es suficiente para lo que necesitamos ahora. Por supuesto para una aplicación mas compleja necesitaríamos adicionar mas dependencias (ej.: spring-context, spring-tx, spring-web, etc…)
Crear el bean Greeting
Ok. ahora vamos al código. por fin!:) pero es algo fácil. Vamos a crear el siguiente bean Greeting en el folder HelloSpring/src/main/java/com/sumasoftware/hellospring. (Ojo, que com/sumasoftware/hellospring es el paquete de la clase :))
package com.sumasoftware.hellospring;
public class Greeting {
public void sayHello(){
System.out.println("Hello World with Spring :)");
}
}
Ahora ejecutamos en la consola el comando:
mvn package
Con esto se verifica que no hay errores de sintaxis y se aprovecha de bajar las dependencias.
Crear archivo de contexto de aplicacion de Spring
Ahora vamos con spring, eeeh!!! :). Para esto vamos a crear el archivo appContext.xml dentro de un folder nuevo llamado resources que estara dentro de HelloSpring/src/main. Entonces el path del archivo sera HelloSpring/src/main/resources/appContext.xml.
<?xml version="1.0" encoding="UTF-8"?>
<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-2.5.xsd">
<bean id="greeting" class="com.sumasoftware.hellospring.Greeting"/>
</beans>
Modificar clase App y para probar funcionalidad
Por defecto, cuando maven crea una aplicacion, crea la clase App que solo tiene un Hello World vamos a modificar la clase, para que cargue el contexto de spring, obtenga el bean y llame al metodo sayHello().
package com.sumasoftware.hellospring;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
* Hello world!
*
*/
public class App
{
public static void main( String[] args )
{
ClassPathXmlApplicationContext context =
new ClassPathXmlApplicationContext("classpath:appContext.xml");
Greeting greeting = (Greeting) context.getBean("greeting");
greeting.sayHello();
}
}
Mas referencia acerca de como crear o instanciar el factory lo encuentra en la documentación de Spring
Listo ya terminamos, ahora como lo ejecutamos :)? bueno yo lo hice con idea. justo maven tiene un otro plugin que se llama idea que te ayuda a crear el archivo de projecto configurado con las dependencias. Solo se tiene que escribir en la linea de comando mvn idea:idea, maven crea el archivo de proyecto, abrimos el proyecto configuramos la clase main y listo. (Lo mismo hay para eclipse)
Claro te también se puede ejecutar desde linea de comando. Solo que es mas trabajoso, ustedes elijan el que mas les guste.
Una vez ejecutada la clase App, esta despliega en consola lo siguiente:
Feb 28, 2009 1:19:19 AM org.springframework.context.support.AbstractApplicationContext prepareRefresh
INFO: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@32fb4f: display name [org.springframework.context.support.ClassPathXmlApplicationContext@32fb4f]; startup date [Sat Feb 28 01:19:19 BOT 2009]; root of context hierarchy
Feb 28, 2009 1:19:19 AM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
INFO: Loading XML bean definitions from class path resource [appContext.xml]
Feb 28, 2009 1:19:19 AM org.springframework.context.support.AbstractApplicationContext obtainFreshBeanFactory
INFO: Bean factory for application context [org.springframework.context.support.ClassPathXmlApplicationContext@32fb4f]: org.springframework.beans.factory.support.DefaultListableBeanFactory@16a786
Feb 28, 2009 1:19:19 AM org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons
INFO: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@16a786: defining beans [greeting]; root of factory hierarchy
Hello World with Spring
Espero este tutorial sirva de mucha ayuda. Acá esta el código fuente. Comentarios son bien recibidos.
Hasta la proxima
Follow me on twitter
Recent Comments