For further reference, please consider the following sections:
- Official Gradle documentation
- Spring Boot Gradle Plugin Reference Guide
- Create an OCI image
- Spring Data JPA
- Spring Web
- Flyway Migration
The following guides illustrate how to use some features concretely:
- Accessing Data with JPA
- Building a RESTful Web Service
- Serving Web Content with Spring MVC
- Building REST services with Spring
These additional references should also help you:
- Para executar a aplicação, é necessário:
- Docker-compose
- JDK 11
- IntelliJ, Eclipse ou IDE com plugin para o Gradle
-
Importe o projeto na IDE como projeto gradle
-
Iniciar MySQL localmente:
# Navegue até o diretório platform/docker
docker-compose up
# Ou na raiz do projeto
docker-compose -f platform/docker/docker-compose.yml up
A aplicação foi desenvolvida usando os princípios de proposto por Alistair Cockburn como pode ser visto no site:
https://netflixtechblog.com/ready-for-changes-with-hexagonal-architecture-b315ec967749
O objetivo é sempre proteger o domain de mudanças em componentes que não são centrais da aplicação.
Para isso temos o conceito de Port que é uma interface que os componentes de infraestrutura tem que implementar para chegar ao resultado final. Essa implementação tem o nome de adapters.
Seguindo esse princípio, é possivel obter uma arquitetura mais desacoplada e qualquer alteração nas camadas de infraestrutura não impactam na camada de domain onde ficam as regras de negócio o que é extremamente interessante para aplicações com vida útil longa.
Para chegar a esse nível de desacoplamento, foi utilizado o Gradle para modularizar a aplicação e controlar a visibilidade entre os componentes.