Spring Boot

Spring Boot - Guia Prático #

O que é Spring Boot? #

Spring Boot é um framework que simplifica drasticamente o desenvolvimento de aplicações Java. Ele automatiza configurações complexas do Spring Framework tradicional, permitindo que você crie aplicaçẽos robustas com pouco código.

“É como a diferença entre configurar um servidor Node.js manualmente versus usar Express. Spring Boot é o Express.js do Java”.

Por que usar Spring Boot? #

ProblemaSolução Spring Boot
Configuração XML complexaConfiguração automática inteligente
Dependências conflitantesGerencia versões compatíveis automaticamente
Deploy complicadoCria JAR executável com servidor embutido
Falta de padrõesForça arquitetura MVC/REST bem definida
Muita escrita de códigoReduz código boilerplate significativamente

Criando projeto Spring Boot #

Via Spring Initializr #

Acesse Spring Initializr baixe e descompacte o projeto já configurado.

Via Maven #

mvn archetype:generate \
  -DgroupId=com.empresa \
  -DartifactId=meu-app \
  -DarchetypeArtifactId=maven-archetype-quickstart

Executando a aplicação #

# Executar via Maven
mvn spring-boot:run

# compliar e executar JAR
mvn clean package
java -jar target/meu-app-1.0.0.jar

Exemplo de aquito pom.xml básico #

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.empresa</groupId>
    <artifactId>meu-app</artifactId>
    <version>1.0.0</version>

    <!-- Parent do Spring Boot (gerencia versões) -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.2.0</version>
        <relativePath/>
    </parent>

    <properties>
        <java.version>11</java.version>
    </properties>

    <dependencies>
        <!-- Web (REST APIs) -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!-- Banco de dados -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.33</version>
        </dependency>

        <!-- Testes -->
        <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>

Estrutura de um Projeto Spring Boot #

src/
├── main/
│   ├── java/com/empresa/app/
│   │   ├── Application.java          # Classe principal
│   │   ├── controller/
│   │   │   └── ProductController.java
│   │   ├── service/
│   │   │   └── ProductService.java
│   │   ├── repository/
│   │   │   └── ProductRepository.java
│   │   └── model/
│   │       └── Product.java
│   └── resources/
│       ├── application.properties    # Configurações
│       ├── application-dev.properties
│       └── application-prod.properties
└── test/
    └── java/com/empresa/app/
        └── ProductControllerTest.java