我知道在Scala中处理依赖注入的最佳方法是使用专门为该语言构建的工具,但我正在开发一个必须集成一些Scala和Java代码的项目。
然后,我使用的是Google Guice,它实现了规范 JSR-330 。幸运的是,我在Guice和Scala的集成过程中没有发现任何问题。我正在使用构造函数注入,因为我必须处理不变性。
我的问题是,为什么在Scala中我们必须在构造函数参数前面使用符号@Inject()
?为什么()
paranthesis?它遵循一个例子:
class MyClass @Inject() (val another: AnotherClass) {
// Body of the class
}
答案 0 :(得分:3)
这是关于注释构造函数的语法。 Scala要求构造函数注释具有一个(且恰好一个)参数列表(即使它是空的)
class Bar @Fooable() ( val i : Int) {
}
i
参数属于以下内容:注释或Bar
类?
class Bar @Fooable( val i : Int) {
}
答案 1 :(得分:3)
否则,你怎么知道(val another: AnotherClass)
是构造函数参数列表还是@Inject
的参数?