/ / Qual é a diferença entre roteador com injeção de dependência e roteador estático no ScalaRouting do Play Framework? - scala, playframework

Qual é a diferença entre o roteador injetado por dependência e o roteador estático no ScalaRouting do Play Framework? - scala, playframework

Qual é a diferença entre o roteador com injeção de dependência e o roteador estático no ScalaRouting do Play Framework?

A documentação da estrutura do Play direciona o roteador com injeção de dependência é usado quando um novo aplicativo Play é criado usando os modelos do Play seed Activator.

Mas ainda estou confuso sobre os dois roteadores.

Se alguém souber, por favor me ensine.

Respostas:

3 para resposta № 1

Em poucas palavras

O roteador dinâmico oferece mais controle sobreinstanciação do controlador. Ele permite que você gerencie dependências usando uma estrutura de injeção de dependência e torna o teste do controlador muito mais fácil. O roteador estático pode ser preferido para a prototipagem, pois é configurado por padrão. Também é uma escolha óbvia para os ativos, pois eles também são estáticos.

Resposta estendida

Tudo começou com o roteador estático. No Play 2.0 você poderia criar um controlador apenas como uma classe com métodos estáticos (em Java) ou como um objeto (em Scala). Ele foi projetado tendo em mente que os controladores MVC são sem estado e, portanto, você não precisa de várias instâncias dessa classe. No entanto, o problema com os métodos e objetos estáticos era que eles eram difíceis de testar na unidade, especialmente a simulação ou o stub de dependências. A injeção de dependência também era muito dolorosa.

Graças a críticas positivas, Play 2.1 introduziu um novo mecanismo para lidar com este problema, o que permitiu a instanciação dinâmica de objetos. A partir deste ponto, você pode escolher entre os dois métodos de rota, colocando @ antes de um nome de classe no arquivo de rotas.

Antes do 2.4, a criação dinâmica era feita usando um getControllerInstance() método em um chamado objeto global, mas este mecanismo foi removido em 2.4 e substituído por uma abordagem de injeção de dependência mais sofisticada.

O roteador estático é mantido principalmente para aplicações muito simplescasos de uso e por causa da compatibilidade com versões anteriores, ainda, para projetos mais recentes, eu sugeriria ir com o roteador dinâmico, pois ele está livre das desvantagens de seu antecessor.