Introdução
Neste tutorial, você vai desenvolver, passo a passo, uma aplicação com o framework.
Pré-requisitos
Para seguir o tutorial, você precisa:
- do Java 25;
- do Maven;
- de acesso à internet, para que o Maven baixe o framework do Maven Central.
O tutorial pressupõe que você sabe programar em Java e usar o Maven. Os conceitos de DDD, arquitetura limpa, CQRS e programação defensiva e o framework são explicados nas páginas de referência, para as quais as lições apontam. Já as bibliotecas sobre as quais o framework é construído não são ensinadas aqui; as lições explicam apenas os detalhes delas que o código usa de forma pouco evidente. Se alguma delas for nova para você, consulte sua documentação:
- Spring Boot, que configura e executa a aplicação, e o Spring Framework, cujo contêiner cria os objetos da aplicação — os beans — e injeta suas dependências;
- Jakarta Persistence (JPA), que mapeia classes para tabelas, e a linguagem de consulta JPQL;
- Spring Data JPA, que implementa repositórios a partir de interfaces;
- Spring Security, que autentica os usuários e protege os endpoints;
- Cucumber e a linguagem Gherkin, usados para especificar e testar o comportamento dos serviços;
- JUnit e Mockito, usados nos testes.
Subdomínios
No exemplo deste tutorial, o domínio foi decomposto em dois subdomínios:
- Geografia, que contém os conceitos de unidade federativa e município;
- CRM (Customer Relationship Management), que contém o conceito de cliente.
Lições
O tutorial é dividido em três lições, cada uma dedicada a um agregado. Cada lição parte do projeto deixado pela anterior e explica apenas o que ela acrescenta:
| Lição | O que acrescenta | Projeto ao final da lição |
|---|---|---|
| 1. Unidade federativa | o projeto Maven, gerado pelo gerador, e o primeiro agregado, implementado camada por camada: domínio, testes, aplicação, infraestrutura e API REST | exemplo1 |
| 2. Município | um agregado que referencia outro, com uma associação entre as entidades JPA, uma ação além das quatro operações básicas e a proteção contra a exclusão de um agregado referenciado | exemplo2 |
| 3. Cliente | o subdomínio CRM, que passa a depender de outro, e um agregado com identificador gerado pelo banco de dados e um objeto de valor formado por vários atributos | exemplo |
Os diretórios exemplo1, exemplo2 e exemplo do repositório de D5 contêm o projeto completo ao final de cada lição. Todos usam os mesmos nomes de módulos e pacotes — em cada lição, você continua evoluindo o mesmo projeto, criado no diretório exemplo.