Scala PlayFramework如何在函数内部注入存储库方法

时间:2016-05-27 23:26:49

标签: scala playframework dependency-injection playframework-2.3

我正在使用播放框架版本2.49,我正在尝试进行依赖注入,这是我第一次这样做。我有3个文件夹界面:存储库:控制器。该接口列出了我在存储库文件夹中实现的抽象方法,然后注入到控制器操作中。在控制器动作方面我只是迷失了。以下是地雷的示例代码

接口

package Interface


abstract class Iprofiles {
  def edit_profile
  def view_profile
  def forgot_password

}

存储库

package Repository

import Interface.Iprofiles
import slick.driver.PostgresDriver.api._

class ProfileRepository extends Iprofiles  {
  val db= Database.forConfig("database")

// These 3 methods will have Database logic soon
  def edit_profile: Unit
  def view_profile: Unit

  def forgot_password: Unit 
}

控制器

package controllers

import play.api.data.Form
import play.api.data.Forms._
class Relations extends Controller {


  def MyAction() = Action {
 // How can I inject edit_profile in the repository folder here
Ok()

}



}

我的Repository方法现在是空的,但我很快就会有数据逻辑。在我的控制器 MyAction()方法中,例如,如何从存储库文件夹中执行DI并包含 edit_profile ?我一直在寻找如何完成这项工作,但没有任何工作

1 个答案:

答案 0 :(得分:0)

JVM上的依赖注入目前仅涉及注入对象引用,而不是方法引用。也就是说,在类中,您声明对类型(通常是接口)的依赖关系,并定义从此(接口)类型到注入器配置中的实现(类型)的映射。 在注入期间 - 通常在对象构造期间 - 获得对注入的实现类型的对象的引用。

然后你可以调用该注入对象的所有方法。

所以你需要一个带引用的属性,这通常是通过构造函数参数填充的。