image

Acesse bootcamps ilimitados e +650 cursos pra sempre

60
%OFF
Article image
Ronaldo Schmidt
Ronaldo Schmidt26/02/2025 16:28
Compartilhe
Nexa - Análise Avançada de Imagens e Texto com IA na AWSRecomendados para vocêNexa - Análise Avançada de Imagens e Texto com IA na AWS

Desenvolvimento Web com Java e Spring: Do Zero ao Deploy!

  • #Java

Se você está começando no mundo do desenvolvimento web com Java e Spring, este artigo é para você!

Vamos construir juntos um projeto web simples, mas completo, dá configuração inicial até o deploy.

Ao final, teremos um aplicativo funcional e entenderemos os conceitos básicos do ecossistema Spring.

Tudo de um jeito simples e sem o bla bla blá de sempre.

Praticamente vou "segurar sua mão" o caminho todo.

O que vamos construir?

Vamos criar uma aplicação web simples.

Um Sistema de Gerenciamento de Tarefas (To-Do List) onde os usuários irão adicionar , listar, marcar ou remover tarefas.

Usaremos as seguintes tecnologias:

  • Java (linguagem de programação).
  • Spring Boot (framework para desenvolvimento web).
  • Thymeleaf (para templates HTML).
  • H2 Database (banco de dados em memória para facilitar o desenvolvimento).
  • Maven (gerenciamento de dependências).

Configuração do Projeto

Acesse Spring Initializr pelo site https://start.spring.io/ e configure o projeto da seguinte forma:

  • Project: Maven Project.
  • Language: Java.
  • Spring Boot: Escolha a versão estável mais recente.
  • Dependencies:
  • Spring Web (para criar endpoints REST).
  • Thymeleaf (para renderizar páginas HTML).
  • Spring Data JPA (para persistência de dados).
  • H2 Database (banco de dados em memória).

Clique em Generate para baixar o projeto.

Abra o projeto na sua IDE favorita (IntelliJ IDEA, Eclipse, VS Code, etc.). A estrutura do projeto será algo assim:

src
├── main
│   ├── java
│   │   └── com
│   │       └── exemplo
│   │           └── todolist
│   │               └── TodoListApplication.java
│   └── resources
│       ├── static
│       ├── templates
│       └── application.properties
└── test

Criando a Entidade Tarefa

Vamos criar uma classe Tarefa que representará as tarefas no nosso sistema.

package com.exemplo.todolist.model;

import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;

@Entity
public class Tarefa {
  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  private Long id;
  private String descricao;
  private boolean concluida;

  // Getters e Setters
}

Criando o Repositório

Vamos usar o Spring Data JPA para criar um repositório que gerencie as operações de banco de dados.

package com.exemplo.todolist.repository;

import com.exemplo.todolist.model.Tarefa;
import org.springframework.data.jpa.repository.JpaRepository;

public interface TarefaRepository extends JpaRepository<Tarefa, Long> {
}

Criando o Controller

Agora, vamos criar um controller para gerenciar as requisições HTTP.

package com.exemplo.todolist.controller;

import com.exemplo.todolist.model.Tarefa;
import com.exemplo.todolist.repository.TarefaRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;

@Controller
@RequestMapping("/tarefas")
public class TarefaController {

  @Autowired
  private TarefaRepository tarefaRepository;

  @GetMapping
  public String listarTarefas(Model model) {
      model.addAttribute("tarefas", tarefaRepository.findAll());
      return "lista-tarefas";
  }

  @PostMapping
  public String adicionarTarefa(@RequestParam String descricao) {
      Tarefa tarefa = new Tarefa();
      tarefa.setDescricao(descricao);
      tarefa.setConcluida(false);
      tarefaRepository.save(tarefa);
      return "redirect:/tarefas";
  }

  @PostMapping("/concluir/{id}")
  public String concluirTarefa(@PathVariable Long id) {
      Tarefa tarefa = tarefaRepository.findById(id).orElseThrow();
      tarefa.setConcluida(true);
      tarefaRepository.save(tarefa);
      return "redirect:/tarefas";
  }

  @PostMapping("/remover/{id}")
  public String removerTarefa(@PathVariable Long id) {
      tarefaRepository.deleteById(id);
      return "redirect:/tarefas";
  }
}

Criando a Interface com Thymeleaf

Vamos criar um template HTML para exibir as tarefas.

Crie um arquivo lista-tarefas.html na pasta src/main/resources/templates:

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
  <title>Lista de Tarefas</title>
</head>
<body>
  <h1>Lista de Tarefas</h1>
  <form action="/tarefas" method="post">
      <input type="text" name="descricao" placeholder="Nova tarefa" required>
      <button type="submit">Adicionar</button>
  </form>
  <ul>
      <li th:each="tarefa : ${tarefas}">
          <span th:text="${tarefa.descricao}"></span>
          <span th:if="${tarefa.concluida}"> (Concluída)</span>
          <a th:href="@{/tarefas/concluir/{id}(id=${tarefa.id})">Concluir</a>
          <a th:href="@{/tarefas/remover/{id}(id=${tarefa.id})">Remover</a>
      </li>
  </ul>
</body>
</html>

Configurando o Banco de Dados H2

No arquivo application.properties, adicione as configurações do H2:

spring.datasource.url=jdbc:h2:mem:todolist
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.h2.console.enabled=true
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect

Acesse o console do H2 em http://localhost:8080/h2-console para visualizar o banco de dados.

Executando o Projeto

Execute a aplicação executando a classe TodoListApplication.

Acesse http://localhost:8080/tarefas no navegador para ver a aplicação em ação.

Deploy no Render ou Railway

Render

  1. Crie uma conta no Render.
  2. Crie um novo serviço Web Service.
  3. Conecte o Render ao seu repositório GitHub.
  4. Configure o build e o start command:
  • Build Command:
mvn clean install
  • Start Command:
java -jar target/nome-do-seu-projeto.jar

Render fará o deploy automaticamente após o push no repositório.

Railway

  1. Crie uma conta no Railway.
  2. Crie um novo projeto e conecte ao GitHub.
  3. Adicione um novo serviço e selecione "Deploy from GitHub repo".
  4. Railway detectará automaticamente que é um projeto Java e fará o deploy.

Parabéns! Acabamos de criar uma aplicação web completa com Java e Spring, desde o desenvolvimento até o deploy.

Agora temos uma base sólida para explorar mais funcionalidades do Spring e construir projetos ainda mais complexos.

Vamos continuar praticando e explorando o ecossistema Java!

Comente ai o que achou e se conseguiu terminar sua aplicação.

Essa é a apenas a ponta do iceberg e ainda há muito a ser explorado!

Obrigado a todos que chegaram até aqui.

Para aprender java é muita mão na massa e muitos projetos praticos.

Então 'hands on' e não deixe de postar seu resultado!

Bons estudos.

Até...

Compartilhe
Recomendados para você
Deal - Spring Boot e Angular (17+)
Cognizant - Arquitetura com Spring Boot e Cloud
Claro - Java com Spring Boot
Comentários (1)
DIO Community
DIO Community - 27/02/2025 17:42

Ótimo guia, Ronaldo! Criar um projeto completo com Spring Boot, desde a configuração até o deploy, é uma das melhores formas de consolidar o aprendizado no desenvolvimento web com Java.

Na DIO, incentivamos esse tipo de abordagem prática, permitindo que os devs não apenas compreendam os conceitos, mas também saibam aplicar cada etapa na criação de APIs, gerenciamento de banco de dados com JPA/H2 e integração com templates Thymeleaf.

Além disso, o deploy no Render e Railway é uma excelente adição, pois mostra como levar aplicações para produção de forma simplificada – algo essencial para quem deseja construir projetos escaláveis e acessíveis.

Para a comunidade tech da DIO, seu artigo serve como um roadmap perfeito para quem quer aprender Spring Boot na prática, dominando desde a estruturação de controllers, services e repositories até a implementação de segurança e boas práticas de código. Hands-on é o caminho, e seu conteúdo está alinhado com o que ensinamos na plataforma!

Recomendados para você