scala guice与辅助注射
我已经使用GoogleGuice和辅助注入机制很长一段时间了。因为我在scala中,刚刚发现scala guice,所以我也对使用它感兴趣。但是我不知道如何使用辅助注射。没有使用辅助注射的例子 因此我的问题是:是否可以使用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,我使用以下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将不再知道如何创建它。