它是通過各種手段可以使用輔助注射Scala中。如果斯卡拉 - 吉斯不爲它提供的工具,你就可以直接使用輔助注射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輔助注射支持,所有這些罐子都很重要。
明白了,謝謝! – MaatDeamon
@MaatDeamon,如果答案是狡猾的,你應該接受它。這就是Stackoverflow的工作原理。 –
如果您要將注入的類轉換爲工廠輔助類,請不要忘記從模塊中刪除舊的綁定,因爲Guice將不再知道如何創建它。 – JMess