斯卡拉吉斯和辅助注射



我一直在使用带有辅助注入机制的google-guice很长一段时间了。因为我在 scala,并且刚刚发现 scala-guice,我也有兴趣使用它。但是,我对如何使用辅助注射感到困惑。没有使用辅助注射的例子。

因此,我的问题是:是否可以将辅助注射与 scala-guice 一起使用,如果是,请谁能提供一个简单的例子?

此外,对于google-guice,我使用以下库:javax.inject.jar,guice-3.0.jar,guice-assistedInject.jar。在这种情况下,我应该删除guice-3.0吗.jar?

在 Scala 中使用辅助注入是可能的。如果 scala-guice 没有提供工具,你可以直接使用辅助注入 API:

trait Entity { ... }
class EntityImpl @Inject (
  @Assisted assistedDep: AssistedDependency, 
  normalDep: NormalDependency
) extends Entity { ... }
trait EntityFactory {
  def create(assistedDep: AssistedDependency): Entity
}
class YourModule extends AbstractModule with ScalaModule {
  def configure {
    install(new FactoryModuleBuilder()
      .implement(classOf[Entity], classOf[EntityImpl])
      .build(classOf[EntityFactory])
    )
    bind[NormalDependency].to[NormalDependencyImpl]
  }
}

没错,它不是很漂亮,但它可以完成工作。

另外,您绝对不应该删除guice-3.0.jar。你当初为什么会想到它? javax.inject.jar包含 JSR-330 注释,guice-3.0.jar包含 Guice 本身,guice-assistedinject-3.0.jar包含辅助注入扩展。如果您需要 Guice 和辅助注射支持,所有这些罐子都很重要。

相关内容

  • 没有找到相关文章

最新更新