Eu estou aprendendo Scala / Play2.1.3 de um fundo c # / .net / asp.net MVC.
Gostaria de saber por que não há suporte a injeção de dependência por padrão?
Nas amostras Play, todos os métodos de acesso a dados são estáticos nas classes do modelo de domínio. Eles usam fábricas em vez de injeções. E se eu quiser zombar de alguns métodos de acesso a dados para testes unitários?
Não há nenhum ORM de alto nível pronto para uso lá. Na verdade, eles me desencorajam a usar ORMs! Em relação aos bancos de dados SQL, não consigo acreditar que tenha que escrever associações novamente, o que não me lembro da última vez que escrevi uma cláusula de associação. Não é um passo atrás?
Eu aprendi a usar princípios SOLID que não são observados no framework Play (completamente) IMO.
Estou errado o seu eu deveria considerar o uso de outro quadro?
Respostas:
1 para resposta № 1Você está certo, a maioria das amostras não usa Injeção de Dependência. Mas desde a versão 2.1, é possível injetar os controladores e suas dependências.
Para a injeção de dependência, verifique o doc e também, como teste de unidade (último parágrafo).
Mas como há muitas chamadas estáticas, você pode acabar com alguma referência estática em algum lugar e não conseguirá testar seu código.
Mas acho que o Play é um ótimo framework, a equipe está modularizando cada vez mais o framework, para que ele seja cada vez melhor em relação aos princípios do SOLID.