Você criará um webservice que aceitará solicitações HTTP GET em http://localhost:8080/alo.
A resposta será uma representação JSON de um objeto, como mostrado a seguir:
{"id":1,"content":"alô mundo"}
Para todos os aplicativos Spring, você deve começar com o Spring Initializr . O Initializr oferece uma maneira rápida de obter todas as dependências de que você precisa para um aplicativo e faz grande parte da configuração para você. Vamos precisar neste exemplo apenas da dependência Spring Web.
A seguir é mostrado o arquivo pom.xml criado:
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.3</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.professorangoti</groupId>
<artifactId>teste</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>teste</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</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>
Agora que configurou o projeto, você pode criar seu serviço da web. Comece o processo pensando nas interações de serviço.
O serviço tratará as requisições GET /alo, e retornará uma resposta HTTP com código 200 OK e corpo no formato JSON que representa um objeto do domínio. Deve ser semelhante à seguinte saída:

A classe Java simples que representa a resposta deverá conter campos, construtores e getters/setters os dados id e conteúdo como na listagem seguinte:
package com.professorangoti.restservice;
public class Dominio {
private static long id;
private final String conteudo;
public Dominio(String conteudo) {
++id;
this.conteudo = conteudo;
}
public long getId() {
return id;
}
public String getConteudo() {
return conteudo;
}
}
Na abordagem do Spring para construir webservices RESTful, as requisições HTTP são tratadas por um controlador. Esses componentes são identificados pela anotação @RestController, e a classe mostrada na seguinte listagem lida com as requisições GET /alo retornando uma nova instância da classe Dominio:
package com.professorangoti.restservice;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class Controlador {
@GetMapping("/alo")
public Dominio greeting() {
return new Dominio("alô mundo");
}
}
Uma diferença importante entre um controlador MVC tradicional e o controlador RESTful é a maneira como o corpo de resposta HTTP é criado. Em vez de depender de uma tecnologia de visualização para realizar a renderização do lado do servidor para HTML, este controlador cria um objeto e os dados do objeto serão usados diretamente no corpo da resposta HTTP no formato JSON.
Execute a classe criado pelo Initializr para iniciar o serviço. O código da aplicação é mostrado a seguir:
package com.professorangoti;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class TesteApplication {
public static void main(String[] args) {
SpringApplication.run(TesteApplication.class, args);
}
}
Agora que o serviço está ativo, visite http://localhost:8080/alo, onde você verá:
