Guia de Introdução ao Spring Boot com Exemplo Prático de HelloWorld

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.

Tags: spring-boot java maven microsservicos desenvolvimento-web

Publicado em 6-18 06:02