我正在使用播放框架版本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 ?我一直在寻找如何完成这项工作,但没有任何工作
答案 0 :(得分:0)
JVM上的依赖注入目前仅涉及注入对象引用,而不是方法引用。也就是说,在类中,您声明对类型(通常是接口)的依赖关系,并定义从此(接口)类型到注入器配置中的实现(类型)的映射。 在注入期间 - 通常在对象构造期间 - 获得对注入的实现类型的对象的引用。
然后你可以调用该注入对象的所有方法。
所以你需要一个带引用的属性,这通常是通过构造函数参数填充的。