它是通过各种手段可以使用辅助注射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