08 / 19 Arquitetura de software na prática · 118 min de vídeo · atualizado em 13 out 2026

Clean Architecture com Java

Aplique limites e inversão de dependências em Java sem prender regras a Spring ou ao banco.

Fernanda Kipper
Fernanda Kipper
Próxima aula →

Os pacotes devem refletir quem pode mudar

Uma organização possível é domain, application, adapter.in.web e adapter.out.persistence. O domínio contém regras e tipos. A aplicação expõe casos de uso. Adaptadores traduzem HTTP ou SQL para esses contratos. O módulo externo pode importar o contrato central; a regra central não importa JpaRepository, HttpServletRequest ou anotações do framework.

O layout de pacotes é uma convenção, não a garantia. Um teste útil é compilar ou inspecionar dependências: a regra pode ser instanciada sem subir Spring? O caso de uso aceita um repositório de memória? O adaptador converte um objeto web para a entrada da aplicação sem levar detalhes HTTP para o domínio?

Cuidado com anotações no domínio

Se uma classe de domínio recebe anotação de persistência, esse detalhe pode parecer inofensivo até o domínio carregar regras e convenções do ORM. Avalie se essa dependência é aceitável ou se vale mapear entidades de persistência para tipos do domínio.

Recupere: o que faz o limite existir: o nome do pacote ou a dependência que o código realmente importa?

Material complementar da Fernanda

  • DIP e injeção de dependência — Transfira a ideia para Java: o ponto de composição escolhe a implementação e a entrega ao caso de uso. A regra depende da interface; o construtor explicita como recebe o objeto. O trecho NestJS do guia não é necessário para este exercício.

Pratique com /aprender

/aprender Proponha pacotes Java para um caso de uso de matrícula com domínio, aplicação, HTTP e PostgreSQL. Peça que eu descreva as importações permitidas. Em seguida mostre uma dependência proibida do domínio para Spring e pergunte como removê-la.
A SEGUIR · AULA 09

Padrões de arquitetura de software com Spring Boot: Clean e Hexagonal

91 min de vídeo · Reconheça como controllers, serviços e repositórios Spring podem funcionar como adaptadores sem serem a arquitetura inteira.

Ir para a aula 09 →