Scala,play框架:如何在域(实体)类中正确地注入依赖项

时间:2016-07-11 13:22:56

标签: scala playframework dependency-injection

我有一个域对象:

case class User(val id: Long, username: String)

我不想遵循服务存储库方法(就像典型的spring应用程序,其中实体只是数据持有者),我想将与用户相关的功能放入User对象中。

但我不想将User对象与具体的基础结构实现联系起来,所以我想要传递接口(traits)。

我尝试按照以下方式执行此操作:

case class User(val id: Long, val username: String, implicit val userRepository: IUserRepository)

在应用程序(控制器或其他地方)的某个地方,我想注入(使用@Inject())IUserRepsoitory的具体实现,并希望它隐式传递给User的构造函数。

问题1 : case class User(val id:Long,val username:String, implicit val userRepository:IUserRepository ) - 这不起作用,它没有被编译

问题2 : 将基础架构实现与对象域分离是正确的方法吗?他们是最好的做法吗?

感谢。

1 个答案:

答案 0 :(得分:1)

整个参数列表是隐式还是非隐式。你正在寻找

case class User(id: Long, username: String)(implicit userRepository: IUserRepository)

在架构上,让用户类知道它自己的存储库听起来是个坏主意。