Buscar..


Aplicación simple con Spring Boot y Jersey

Spring Boot es un marco de arranque para aplicaciones Spring. Tiene soporte sin problemas para la integración con Jersey también. Una de las ventajas de esto (desde la perspectiva de un usuario de Jersey), es que tiene acceso al vasto ecosistema de Spring.

Para comenzar, cree un nuevo proyecto Maven independiente (no wepapp). También podemos crear una aplicación web, pero para esta guía, solo usaremos una aplicación independiente. Una vez que haya creado el proyecto, agregue lo siguiente a su pom.xml

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
</properties>
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.4.0.RELEASE</version>
</parent>
<dependencies>  
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jersey</artifactId>
    </dependency>
    <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-tomcat</artifactId>
    </dependency>
</dependencies>
<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

Solo necesitamos dos dependencias. Uno para el módulo Jersey Spring Boot y otro para un servidor Tomcat incorporado. El complemento que usaremos para ejecutar la aplicación para probar.

Una vez que tenga eso, agregue las siguientes clases al proyecto.

com/example
  |
  +-- GreetingApplication.class
  +-- JerseyConfig.class
  |
  + com/example/services
  |   |
  |   +-- GreetingService.class
  |   +-- NiceGreetingService.class
  |
  + com/examples/resources
      |
      +-- GreetingResource.class 

GreetingApplication.class

Esta es la clase bootstrap (muy simple)

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class GreetingApplication {
    
    public static void main(String[] args) {
        SpringApplication.run(GreetingApplication.class, args);
    }
}

JerseyConfig.class

Esta es la clase de configuración de Jersey

import javax.ws.rs.ApplicationPath;
import org.glassfish.jersey.server.ResourceConfig;
import org.springframework.stereotype.Component;

@Component
@ApplicationPath("/api")
public class JerseyConfig extends ResourceConfig {
    public JerseyConfig() {
        packages("com.example");
    }
}

GreetingService.class y NiceGreetingService.class

public interface GreetingService {
   public String getGreeting(String name);
}

import org.springframework.stereotype.Component;

@Component
public class NiceGreetingService implements GreetingService {
    
    @Override
    public String getGreeting(String name) {
        return "Hello " + name + "!";
    }
}

GreetingResource

Esta es la clase de recurso en la que permitiremos a Spring inyectar el Servicio de GreetingService .

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.QueryParam;
import org.springframework.beans.factory.annotation.Autowired;
import com.example.service.GreetingService;

@Path("greeting")
public class GreetingResource {

    private GreetingService greetingService;

    @Autowired
    public GreetingResource(GreetingService greetingService) {
        this.greetingService = greetingService;
    }

    @GET
    public String getGreeting(@QueryParam("name") String name) {
        return this.greetingService.getGreeting(name);
    }
}

Y eso es. Ahora podemos ejecutar la aplicación. Toma un terminal y ejecuta el siguiente comando desde la raíz del proyecto.

mvn spring-boot:run

La aplicación debe tardar unos segundos en comenzar. Habrá algunos registros y verá algunas ilustraciones de Spring ASCII. Después de ese arte, debería ser alrededor de 30 líneas o más de registro, entonces debería ver

 15.784 seconds (JVM running for 38.056)

Ahora se inicia la aplicación. Si usas cURL puedes probarlo con

curl -v 'http://localhost:8080/api/greeting?name=peeskillet'

Si está en Windows, use comillas dobles alrededor de la URL. Si no está utilizando cURL, simplemente escríbalo en el navegador. Deberías ver el resultado.

Hello peeskillet!

Es posible que note que la solicitud demora unos segundos en la primera solicitud que realice. Esto se debe a que Jersey no está completamente cargado cuando se lanza la aplicación. Podemos cambiar eso agregando un archivo application.properties en la carpeta src/main/resources . En ese archivo agregue lo siguiente:

spring.jersey.servlet.load-on-startup=1


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow