scala guice与辅助注射

scala guice与辅助注射,scala,guice,assisted-inject,Scala,Guice,Assisted Inject,我已经使用GoogleGuice和辅助注入机制很长一段时间了。因为我在scala中,刚刚发现scala guice,所以我也对使用它感兴趣。但是我不知道如何使用辅助注射。没有使用辅助注射的例子 因此我的问题是:是否可以使用scala guice辅助注射,如果可以,请提供一个简单的例子 此外,对于GoogleGuice,我使用以下libs:javax.inject.jar、guice-3.0.jar、guice-assistedInject.jar。在这种情况下,我是否应该删除guice-3.0.

我已经使用GoogleGuice和辅助注入机制很长一段时间了。因为我在scala中,刚刚发现scala guice,所以我也对使用它感兴趣。但是我不知道如何使用辅助注射。没有使用辅助注射的例子

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


此外,对于GoogleGuice,我使用以下libs: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的辅助注入支持,那么所有这些JAR都很重要。

@MaatDeamon,如果答案是有帮助的,您应该接受它。这就是Stackoverflow的工作原理。如果要将注入类转换为工厂辅助类,请不要忘记从模块中删除旧绑定,因为Guice将不再知道如何创建它。