2013-08-24 45 views
0

我从C#/ .Net/ASP.NET MVC背景学习Scala/Play2.1.3。玩框架SOLID原则

我想知道为什么默认情况下没有依赖注入支持?

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

那里没有准备使用的高级别ORM。其实他们不鼓励我使用ORM!关于SQL DB,我无法相信我必须再次写入连接,我不记得上次编写连接子句。这不是退步吗?

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

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

+0

设置DI并摆脱这些静态控制器方法非常简单。我认为他们不会试图强迫你使用特定的框架来让你自己选择一个框架是很好的。如果你认为它对你的项目更有意义,那么就不要听文档告诉你什么是不鼓励的。 – Kapep

+0

但是,因为我是Pl​​ay(或其他任何人)的新手,对我来说遵循创作者的指导原则和建议会更好吗? –

+1

当然,你一般应该遵循指导原则。默认设置中的一些内容并不一定是各种情况的最佳解决方案。 DI是一个很好的例子。我试图说的是,寻找文档中推荐的工具和框架的替代方案也是一件好事。 – Kapep

回答

1

你是对的,大多数样本不使用依赖注入。但从2.1版本开始,可以注入控制器及其依赖关系。

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

但是由于有很多静态调用,你最终可能会在某处引用一些静态引用,你将无法单元测试你的代码。

但我认为Play是一个很好的框架,团队越来越模块化框架,所以关于SOLID原则它会更好,更好。

+0

那么Play现在准备好了吗?我可以在生产中使用它吗?或者我应该等到它变得更成熟了? –

+2

是的,Play已准备好投入生产;例如,它被[Linked In]使用(http://engineering.linkedin.com/play/play-framework-linkedin)。 –