Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Desacoplamento de Framework

Olá ! É possível construímos uma aplicação Spring Boot onde não haja um nível de acoplamento muito alto a ponto de trocarmos o framework por um outro?? por exemplo pelo Play ou Java EE.

obrigado

2 respostas
solução!

Oi Osnir,

Excelente pergunta!

Normalmente as pessoas costumam desenvolver softwares de maneira que eles fiquem muito acoplados com os frameworks utilizados, em especial o framework MVC, sendo que isso dificulta bastante no caso de um refactoring arquitetural, cujo objetivo seja migrar a arquitetura com o menor impacto possível.

Existem alguns modelos de arquitetura que facilitam esse tipo de migração, pois focam em deixar o código de domínio da aplicação desacoplado do código de infraestrutura dela:

  • Clean Architecture
  • Haxagonal Architecture
  • Onion Architecture

Se você montar a arquitetura do seu software seguindo algum desses modelos é possível sim criar uma arquitetura que facilita e simplifica a troca de qualquer framework.

Recomendo a leitura do post do Uncle Bob sobre clean architecture: https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html

Inclusive ele escreveu um livro posteriormente falando sobre o assunto: https://www.amazon.com.br/Clean-Architecture-Craftsmans-Software-Structure/dp/0134494164

No meu GitHub tem um projeto de exemplo que segue o Clean Architecture: https://github.com/rcaneppele/fj91-clean-architecture

Mas lembre-se que tudo tem seus trade-offs, pois nesse modelo de arquitetura você vai ter códigos repetidos e a complexidade do projeto será maior, além da estrutura dele ser bem "estranha" para quem não está acostumado.

Bons estudos!

Valeu Rodrigo !!!!!

Já estava estudando Onion Architecture para separar o projeto mais ou menos como abaixo, usando uma abordagem de DDD

Entities
Commands
Repositories
ValueObjects
Enums
Handlers
Queries
Services

O engraçado é que, no fundo as arquiteturas acabam sendo muito similares, porem resolvendo uma parte especifica do projeto de forma muito inteligente, inclusive acredito que em alguns casos teremos que utilizar o melhor de cada uma no mesmo problema.

Espero ver futuramente na plataforma algum treinamento que aborde desenvolvimento de aplicações em algumas destas arquiteturas no mundo Java

Muito obrigado mesmo pela resposta, ajudou muito. Seu curso foi top!!