Monta fácilmente tu proyecto con Spring Boot Starter POMs

2
27131

Monta fácilmente tu proyecto con Spring Boot Starter POMs

0. Índice de contenidos.


1. Introducción.

Spring Boot Starter POMs es una utilidad existente dentro de Spring Boot que facilita la creación y configuración de una aplicación Java. Cuando creamos un proyecto y montamos el fichero de configuración de Maven debemos añadir las librerías de Spring y de terceros que necesita el proyecto para funcionar.

A partir de ahora esta tarea nos la podemos ahorrar utilizando alguno de los proyectos pre-configurados de Spring boot, hay muchos ya creados que nos pueden servir.

spring-boot-starter
spring-boot-starter-amqp
spring-boot-starter-aop
spring-boot-starter-batch
spring-boot-starter-data-elasticsearch
spring-boot-starter-data-gemfire
spring-boot-starter-data-jpa
spring-boot-starter-data-mongodb
spring-boot-starter-data-rest
spring-boot-starter-data-solr
spring-boot-starter-freemarker
spring-boot-starter-groovy-templates
spring-boot-starter-hornetq
spring-boot-starter-integration
spring-boot-starter-jdbc
spring-boot-starter-jta-atomikos
spring-boot-starter-jta-bitronix
spring-boot-starter-mobile
spring-boot-starter-redis
spring-boot-starter-security
spring-boot-starter-social-facebook
spring-boot-starter-social-linkedin
spring-boot-starter-social-twitter
spring-boot-starter-test
spring-boot-starter-thymeleaf
spring-boot-starter-velocity
spring-boot-starter-web
spring-boot-starter-websocket
spring-boot-starter-ws

Otros preparados ya con configuración de monitorización y soporte remoto por ssh:

spring-boot-starter-actuator
spring-boot-starter-remote-shell

Y para añadir funcionalidad para logs o servidores donde desplegar una aplicación web en desarrollo:

spring-boot-starter-jetty
spring-boot-starter-log4j
spring-boot-starter-logging
spring-boot-starter-tomcat

En este tutorial vamos a ver cómo configurar un projecto web de forma sencilla con spring boot starter.

2. Entorno.

El tutorial se ha realizado con el siguiente entorno:

  • MacBook Pro 15′ (2.4 GHz Intel Core i5, 8GB DDR3 SDRAM).
  • Sistema Operativo: Mac OS Mavericks 10.9.5
  • Spring Boot Starter 1.20.BUILD-SNAPSHOT

3. Ejemplo de aplicación web con Maven

Nos configura nuestra aplicación con todo (o casi) lo necesario para empezar a montar nuestro proyecto web:

<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.autentia.tutoriales</groupId>
    <artifactId>spring-boot-starter-web-sample</artifactId>
    <version>0.0.1-SNAPSHOT</version>

    <!-- Inherit defaults from Spring Boot -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.2.0.BUILD-SNAPSHOT</version>
    </parent>

    <!-- Add typical dependencies for a web application -->
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

    <!-- Package as an executable jar -->
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

    <!-- Add Spring repositories -->
    <!-- (you don't need this if you are using a .RELEASE version) -->
    <repositories>
        <repository>
            <id>spring-snapshots</id>
            <url>http://repo.spring.io/snapshot</url>
            <snapshots><enabled>true</enabled></snapshots>
        </repository>
        <repository>
            <id>spring-milestones</id>
            <url>http://repo.spring.io/milestone</url>
        </repository>
    </repositories>
    
    <pluginRepositories>
        <pluginRepository>
            <id>spring-snapshots</id>
            <url>http://repo.spring.io/snapshot</url>
        </pluginRepository>
        <pluginRepository>
            <id>spring-milestones</id>
            <url>http://repo.spring.io/milestone</url>
        </pluginRepository>
    </pluginRepositories>
</project>

Primero configuramos nuestro proyecto web añadiendo spring-boot-starter-parent como proyecto padre. éste ya nos añade dependencias comunes a proyectos con Spring como el spring-core y una serie de plugins por defecto: maven-jar-plugin, maven-surefire-plugin, maven-war-plugin, exec-maven-plugin, etc.

Si en nuestro proyecto ya tuviéramos un ‘parent’ no podríamos poner otro, para este caso habría que añadir la dependencia sprig-boot-dependencies (es el parent del spring-boot-starter-parent).

<dependencyManagement>
     <dependencies>
        <dependency>
            <!-- Import dependency management from Spring Boot -->
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>1.2.0.BUILD-SNAPSHOT</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

El web-starter nos configurará en nuestro proyecto por defecto el spring-boot-starter-tomcat junto a otros como spring-web, spring-webmvc, hibernate-validator, jackson-databind, etc.

4. Ejemplo de aplicación web con Gradle

La configuración del proyecto web para usar spring boot starter con Gradle es la siguiente:


buildscript {
    repositories {
        jcenter()
        maven { url "http://repo.spring.io/snapshot" }
        maven { url "http://repo.spring.io/milestone" }
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:1.2.0.BUILD-SNAPSHOT")
    }
}

apply plugin: 'java'
apply plugin: 'spring-boot'

jar {
    baseName = 'myproject'
    version =  '0.0.1-SNAPSHOT'
}

repositories {
    jcenter()
    maven { url "http://repo.spring.io/snapshot" }
    maven { url "http://repo.spring.io/milestone" }
}

dependencies {
    compile("org.springframework.boot:spring-boot-starter-web")
    testCompile("org.springframework.boot:spring-boot-starter-test")
}

5. @EnableAutoConfiguration

La anotación @EnableAutoConfiguration sirve para indicarle a Spring Boot la clase de arranque de nuestra aplicación, podría ser una clase main donde delegamos en Spring la ‘auto configuración’.

Que sería nuestra prueba de concepto sin nuestro querido ‘Hola mundo’. Vamos a probar si tenemos bien configurado el proyecto creando una clase Java que anotada con @RestController y @RequestMapping será un servicio REST.

package com.autentia.tutoriales;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@EnableAutoConfiguration
public class Greeting {

    @RequestMapping("/")
    String getGreeting() {
        return "Hello World!";
    }

    public static void main(String[] args) throws Exception {
        SpringApplication.run(Greeting.class, args);
    }
}

Para arrancar la aplicación bastaría con lanzar por consola el comando mvn spring-boot:run:

[INFO] <<< spring-boot-maven-plugin:1.2.0.BUILD-SNAPSHOT:run (default-cli) @ spring-boot-starter-web-sample <<<
[INFO] 
[INFO] --- spring-boot-maven-plugin:1.2.0.BUILD-SNAPSHOT:run (default-cli) @ spring-boot-starter-web-sample ---
[INFO] Attaching agents: []

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::  (v1.2.0.BUILD-SNAPSHOT)

2014-10-19 23:25:10.319  INFO 47902 --- [main] com.autentia.tutoriales.Greeting: 
Starting Greeting on MacBook-Pro-Juan-Alonso.local with PID 47902 
(/Users/jalonso/spring_boot/target/classes started by jalonso in /Users/jalonso/spring_boot)

Esto arrancará un servidor Tomcat embebido, no es necesario instalarnos nada y para pruebas en muy útil. Accedemos con un navegador a la url http://localhost:8080/ y veremos el mensaje.

6. Referencias

  • http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#getting-started-introducing-spring-boot
  • https://github.com/spring-projects/spring-boot/tree/master/spring-boot-starters

7. Conclusiones.

Como hemos podido comprobar, Spring cada vez nos facilita más la tareas de configuración de los proyectos dejándonos más tiempo libre para que nos centremos en desarrollar la funcionalidad de la aplicación sin tener que complicarnos con la gestión de las librerías, aspecto a agradecerles.

Espero que te haya sido de ayuda.

Un saludo.

Juan

2 COMENTARIOS

  1. Hola, gracias por el artículo, tengo una pregunta aunque ha pasado ya un tiempo, ¿como despliego el proyecto en mi servidor? Ya no necesito tener tomcat y generar un war?

DEJA UNA RESPUESTA

Por favor ingrese su comentario!

He leído y acepto la política de privacidad

Por favor ingrese su nombre aquí

Información básica acerca de la protección de datos

  • Responsable:
  • Finalidad:
  • Legitimación:
  • Destinatarios:
  • Derechos:
  • Más información: Puedes ampliar información acerca de la protección de datos en el siguiente enlace:política de privacidad