Guia Completo Spring Boot para Iniciantes

Este guia oferece um panorama abrangente do Spring Boot, um framework que simplifica o desenvolvimento de aplicações Java. Serão abordados desde a criação do projeto até a configuração do banco de dados e os primeiros testes de API, proporcionando uma base sólida para desenvolvedores.

Iniciando um Projeto Spring Boot com o Spring Initializr

O Spring Initializr é uma ferramenta essencial para criar um novo projeto Spring Boot. Siga os passos abaixo:

  1. Acesse o Spring Initializr.
  2. Escolha o tipo de projeto (Maven recomendado).
  3. Selecione a linguagem: Java.
  4. Escolha a versão mais recente do Spring Boot.
  5. Preencha os metadados do projeto (Group, Artifact, Name, Description, Package name).
  6. Adicione dependências essenciais como:
    • Spring Web: Para criar APIs RESTful.
    • Spring Data JPA: Para integração com o banco de dados.
    • H2 Database: Banco de dados em memória para testes.
    • Lombok: Para reduzir o código boilerplate.
  7. Clique em "Generate" para baixar o projeto.

Estrutura do Projeto Spring Boot

Após extrair o projeto, a seguinte estrutura será exibida:

src
├── main
│   ├── java/com/exemplo/demo  
│   │   ├── DemoApplication.java   // Ponto de entrada
│   │   ├── controller             // Controladores REST
│   │   ├── service                // Regras de negócio
│   │   ├── repository             // Acesso ao banco de dados
│   │   ├── model                  // Modelos de entidade
│   ├── resources
│   │   ├── application.properties  // Configurações
│   │   ├── static                  // Arquivos estáticos
│   │   ├── templates               // Templates dinâmicos
├── test
│   └── java/com/exemplo/demo  // Testes unitários
pom.xml                        // Configuração do Maven

Modelagem de Dados: Criando uma Entidade

As entidades representam tabelas no banco de dados. A seguir, um exemplo de uma entidade Usuario:

import javax.persistence.*;

@Entity
@Table(name = "usuarios")
public class Usuario {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(nullable = false)
    private String nome;

    @Column(unique = true, nullable = false)
    private String email;

    // Getters e Setters
    public Long getId() { return id; }
    public void setId(Long id) { this.id = id; }
    
    public String getNome() { return nome; }
    public void setNome(String nome) { this.nome = nome; }

    public String getEmail() { return email; }
    public void setEmail(String email) { this.email = email; }
}

Principais anotações utilizadas: