Basicamente o pom.xml tem apenas a dependência do spring-boot-stater-jersey, que trará todas as bibliotecas necessárias para usarmos o Jersey já configurável através do Spring Boot.
<?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>br.com.tassioauad</groupId> | |
<artifactId>springbootjersey</artifactId> | |
<version>0.0.1-SNAPSHOT</version> | |
<packaging>jar</packaging> | |
<name>springbootjersey</name> | |
<description>Projeto de Demonstração do Spring Boot com Jersey</description> | |
<parent> | |
<groupId>org.springframework.boot</groupId> | |
<artifactId>spring-boot-starter-parent</artifactId> | |
<version>2.0.1.RELEASE</version> | |
<relativePath/> | |
</parent> | |
<properties> | |
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> | |
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> | |
<java.version>1.8</java.version> | |
</properties> | |
<dependencies> | |
<dependency> | |
<groupId>org.springframework.boot</groupId> | |
<artifactId>spring-boot-starter-jersey</artifactId> | |
</dependency> | |
<dependency> | |
<groupId>org.springframework.boot</groupId> | |
<artifactId>spring-boot-starter-test</artifactId> | |
<scope>test</scope> | |
</dependency> | |
</dependencies> | |
<build> | |
<plugins> | |
<plugin> | |
<groupId>org.springframework.boot</groupId> | |
<artifactId>spring-boot-maven-plugin</artifactId> | |
</plugin> | |
</plugins> | |
</build> | |
</project> |
Quanto a configuração básica e essencial, só precisaremos dessa classe abaixo:
@Configuration | |
@ApplicationPath("v1") | |
public class JerseyConfig extends ResourceConfig { | |
public JerseyConfig() { | |
} | |
@PostConstruct | |
public void setUp() { | |
register(HelloWorldResource.class); | |
} | |
} |
A classe ResourceConfig que é herdada, é tradicional nas configurações do Jersey, que podem ser feitas por meio de extensão dessa classe ou de arquivo web.xml. A annotation @Configuration é comum no Spring Boot e transforma essa classe em um bean lida automaticamente pelo Spring Boot.
Um detalhe importante é a annotation @ApplicationPath, que receberá um endereço base para todos os resources. Sendo assim, todo resource que formos acessar será através da URL base http://localhost:<port>/v1/<resource_name>.
Em vez de usarmos o register(HelloWorldResource.class);
podemos instanciar o resource e passar como parâmetro ou mesmo informar o package onde se encontram todos os nossos resources para que todos sejam instanciados em vez de informarmos um a um.
@PostConstruct
setUp() {
register(MyResource.class);
register(new MyResource());
packages("br.com.tassioauad.myapp.resource");
}
Por fim, criaremos nosso resource:
@Component | |
@Path("hello") | |
public class HelloWorldResource { | |
@GET | |
@Produces("application/json") | |
public String hello() { | |
return "Hello, world"; | |
} | |
} |
com as annotations do JAX-RS vindos do pacote javax.ws.rs.*, mas lembrando sempre de informar o @Component do Spring Boot para que seja tratado como um bean do Spring.
Basta executar e acessar o endereço http://localhost:<port>/v1/hello.