Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Como desacoplar Componentes aplicando DI e IoC com Kotlin e Spring

Como desacoplar Componentes aplicando DI e IoC com Kotlin e Spring

Esse Slide foi utilizado em minha Talk do TDC Connections 2022 na sala da Cora.

A idéia é mostrar como muitos conceitos que vemos em chuvas de palavras, já utilizamos em nosso dia-a-dia no desenvolvimento Java/Kotlin com Spring, além de demonstrar como funciona o ciclo de vida de componentes no Spring.

Utilizei este repositório no Github: https://github.com/fabianogoes/tdc2022-demo-order

Fabiano Góes

March 24, 2022
Tweet

More Decks by Fabiano Góes

Other Decks in Programming

Transcript

  1. A boa notícia é que, em muitos casos, os conceitos

    já estão sendo usados, mas nem sabemos.
  2. Acoplamento Um software com Forte Acoplamento torna-se um problema na

    hora de mantê-lo devido ao alto grau de interdependência entre seus componentes
  3. Um exemplo de como violar vários princípios ❌ Alta coesão.

    ❌ Baixo acoplamento. ❌ Responsabilidade única. ❌ Princípio da Inversão de Dependência. ❌ Abertos para extensão, mas fechados para modificação.
  4. Como podemos melhorar isso? ✓ Controller deveria apenas controlar a

    entrada e saída de dados. ✓ Controller não deveria saber sobre Repositório. ✓ Controller não deveria saber de como construir um Pedido. ✓ Precisamos conseguir testar nossa regra de pedido isoladamente. ✓ Precisamos conseguir configurar um banco de dados para cada ambiente.
  5. Porque desacoplar componentes? • Funcionou. Por que mexer? • Porque

    Refatorar? • Teste é para os fracos. Don't want
  6. Não é fácil testar código acoplado e sem coesão! Se

    o seu código está difícil de ser testado isoladamente, pode ser um cheiro de que ele está com alto acoplamento e baixa coesão. E isso vai ter um custo alto e o seu castelo de cartas pode cair a qualquer momento.
  7. Princípios que podemos utilizar: Princípio da Responsabilidade única S do

    S.O.L.D Uma classe deve ter um, e somente um, motivo para mudar. Inversão de Controle Um padrão muito utilizado em POO para delegar a responsabilidade do ciclo de vida de componentes. Princípio da Inversão de Dependência D do S.O.L.I.D Dependa de abstrações e não de implementações SRP IoC DIP
  8. Começando aplicando o princípio (DIP) Princípio da Inversão de Dependência

    D do S.O.L.I.D - Dependa de abstrações e não de implementações
  9. E o IoC cadê? onde ele entrou nessa história toda?

    Inversão de Controle Um padrão muito utilizado em POO para delegar a responsabilidade do ciclo de vida de componentes. IoC
  10. Estrutura Domínio isolado e protegido das bordas de entrada e

    saída que envolvem tecnologia e não negócio. Portas são as Interfaces onde o UseCase conhece e executa alguma coisa fora do negócio. Infra é a parte de tecnologia e acesso externos ao domínio, como: Banco de Dados, Comunicação Assíncrona e etc. Web é a camada de input da aplicação