Dependency injection 将播放依赖项注入模块配置为特征
在: 强烈建议,除了为JSR-330 DI提供一个模块外,插件还提供了一个Scala特性,可以手动构造模块。这允许在不需要运行时依赖项注入提供程序的情况下使用模块 如果我的模块的构造依赖于Dependency injection 将播放依赖项注入模块配置为特征,dependency-injection,playframework,Dependency Injection,Playframework,在: 强烈建议,除了为JSR-330 DI提供一个模块外,插件还提供了一个Scala特性,可以手动构造模块。这允许在不需要运行时依赖项注入提供程序的情况下使用模块 如果我的模块的构造依赖于play.api.Configuration,那么我可以使用ConfigFactory.load(“应用程序”)创建依赖项,然后像这样为我的模块创建工厂吗: object MyModule { def apply(config: Config) = { val credentials = /* co
play.api.Configuration
,那么我可以使用ConfigFactory.load(“应用程序”)
创建依赖项,然后像这样为我的模块创建工厂吗:
object MyModule {
def apply(config: Config) = {
val credentials = /* construct from config */
new MyModule(credentials)
}
}
我想我在想,如果模块本身需要依赖注入资源,我应该如何在trait中构造模块?如果我的trait需要其他东西,比如
环境
?你可以在trait中定义抽象成员。这意味着需要模块的代码必须提供这些功能。比如你的例子
//您的定义
性状MyModuleComponents{
def配置:配置
lazy val模块=新的MyModule(配置)
}
//用法
类MyApp扩展了MyModuleComponents{
//在此处提供配置
val配置=ConfigFactory.load(“应用程序”)
//使用模块
模块.doSomething()
}
举个更好的例子,你可以看一个例子