image

Acesse bootcamps ilimitados e +650 cursos

50
%OFF
Article image
Ronaldo Schmidt
Ronaldo Schmidt26/02/2025 16:28
Compartilhe

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 (0)