【问题标题】:Play framework SOLID principles播放框架 SOLID 原则
【发布时间】:2013-08-25 02:19:31
【问题描述】:

我正在从 C#/.Net/ASP.NET MVC 背景学习 Scala/Play2.1.3。

不知道为什么默认不支持依赖注入?

在 Play 示例中,所有数据访问方法在域模型类中都是静态的。他们使用工厂而不是注射剂。如果我想模拟一些用于单元测试的数据访问方法怎么办?

那里没有现成的高级 ORM。实际上,他们不鼓励我使用 ORM!关于 SQL DB,我不敢相信我必须再次编写连接,我不记得上次写连接子句是什么时候了。是不是退步了?

我学会了使用 Play 框架(完全)IMO 中未观察到的 SOLID 主体。

我错了,我应该考虑使用另一个框架吗?

【问题讨论】:

  • 设置 DI 并摆脱那些静态控制器方法非常容易。我认为他们不试图强迫你为某事使用特定的框架并让你自己选择一个是很好的。如果文档告诉您,如果您认为某些内容对您的项目更有意义,那么请不要听。
  • 但由于我是 Play 新手(或其他任何东西),我最好遵循其创建者的指南和建议吗?
  • 是的,当然,您通常应该遵循指南。默认设置中的某些内容不一定是每种 情况的最佳解决方案。 DI 就是一个很好的例子。我想说的是,寻找文档中推荐的工具和框架的替代品也很好。

标签: scala architecture playframework


【解决方案1】:

您是对的,大多数示例不使用依赖注入。但从 2.1 版本开始,可以注入控制器及其依赖项。

对于依赖注入,检查dochow to unit test(最后一段)。

但由于有许多静态调用,您最终可能会在某处获得一些静态引用,并且您将无法对代码进行单元测试。

但我认为 Play 是一个很棒的框架,团队正在将越来越多的框架模块化,这样它在 SOLID 原则方面会越来越好。

【讨论】:

  • Play 现在准备好投入生产了吗?我可以在生产中使用它还是应该等到它变得更成熟?
  • 是的,Play 已准备好进行生产;例如,它被Linked In使用。
猜你喜欢
  • 2017-10-05
  • 2013-01-01
  • 2010-12-03
  • 1970-01-01
  • 1970-01-01
  • 2017-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多