O que é Spring Boot
O Spring Boot simplifica o desenvolvimento de aplicações Spring, adotando o princípio de "convenção sobre configuração", removendo complexidades para que o desenvolvedor possa se concentrar na lógica de negócios. Ele integra a pilha tecnológica do Spring e oferece uma solução completa para J2EE, permitindo a criação rápida de aplicações independentes e prontas para produção.
Entre as vantagens destacam-se a criação rápida de projetos Spring autônomos com integração a frameworks populares, o uso de contêineres Servlet embutidos que eliminam a necessidade de gerar pacotes WAR, os starters que gerenciam automaticamente dependências e versões, vastas configurações automáticas que simplificam o desenvolvimento (customizáveis conforme necessário), a eliminação de configurações XML e geração de código, monitoramento em tempo real em ambientes de pré-produção e integração nativa com serviços de nuvem.
O conceito de microsserviços refere-se a um estilo arquitetônico onde uma aplicação é composta por serviços pequenos e especializados que se comunicam via HTTP. Isso contrasta com aplicações monolíticas, onde todas as funcionalidades residem em um único processo, dificultando a manutenção e escalabilidade. Em microsserviços, cada componente é uma unidade de software independente, permitindo substituição e atualização isolada.
Criando um Projeto Spring Boot com Maven
Para iniciar, crie um projeto Maven vazio e configure o parent Spring Boot no arquivo pom.xml. O Spring Boot atua como um centro de gerenciamento de versões, simplificando a declaração de dependências.
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.4.RELEASE</version>
<relativePath/>
</parent>
Adicione a dependência do starter web, que inclui todas as bibliotecas necessárias para aplicações web:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
Os starters encapsulam funcionalidades específicas; basta adicioná-los para obter um conjunto completo de dependências oitmizadas.
Implementando a Aplicação HelloWorld
Defina uma classe principal anotada com @SpringBootApplication para inicializar o aplicativo Spring Boot:
package com.exemplo.principal;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class ClassePrincipalAplicacao {
public static void main(String[] args) {
SpringApplication.run(ClassePrincipalAplicacao.class, args);
}
}
Em seguida, crie um controlador simples para responder a requisições HTTP:
package com.exemplo.controlador;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class ControladorSaudacao {
@RequestMapping("/ola")
public String obterSaudacao() {
return "Olá, Mundo!";
}
}
Execute a classe principal diretamente como uma aplicação Java. Acesse o endpoint /ola no navegador para testar a resposta.
Empacotando e Executando como JAR
Para gerar um pacote executável, adicione o plugin Spring Boot ao pom.xml:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
Execute mvn package para criar o JAR. Para iniciar a aplicação, utilize java -jar nome-do-jar.jar.
Estrutura do Projeto e Testes
Organize o código seguindo padrões recomendados: coloque a classe principal no pacote raiz, subdivida em pacotes como modelo, servico e controlador para separar responsabilidades.
Para testes unitários, use o MockMvc para simular requisições HTTP:
package com.exemplo.testes;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
@RunWith(SpringRunner.class)
@SpringBootTest
public class TestesSaudacao {
private MockMvc mockMvc;
@Before
public void configurar() throws Exception {
mockMvc = MockMvcBuilders.standaloneSetup(new ControladorSaudacao()).build();
}
@Test
public void verificarResposta() throws Exception {
mockMvc.perform(get("/ola"))
.andExpect(status().isOk())
.andExpect(content().string("Olá, Mundo!"));
}
}
Hot Reload em Ambiente de Desenvolvimento
Para facilitar a depuração, adicione a dependência do devtools ao projeto. Isso permite atualizações em tempo real durante o desenvolvimento sem reiniciar manualmente a aplicação:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
Configure o plugin Spring Boot para suportar reinicialização automática ao modificra o código-fonte.