Scala和@Inject注释

时间:2016-07-28 08:22:04

标签: java scala dependency-injection

我知道在Scala中处理依赖注入的最佳方法是使用专门为该语言构建的工具,但我正在开发一个必须集成一些Scala和Java代码的项目。

然后,我使用的是Google Guice,它实现了规范 JSR-330 。幸运的是,我在Guice和Scala的集成过程中没有发现任何问题。我正在使用构造函数注入,因为我必须处理不变性。

我的问题是,为什么在Scala中我们必须在构造函数参数前面使用符号@Inject()?为什么() paranthesis?它遵循一个例子:

class MyClass @Inject() (val another: AnotherClass) {
  // Body of the class
}

2 个答案:

答案 0 :(得分:3)

这是关于注释构造函数的语法。 Scala要求构造函数注释具有一个(且恰好一个)参数列表(即使它是空的)

class Bar @Fooable() ( val i : Int) {

}

i参数属于以下内容:注释或Bar类?

class Bar @Fooable( val i : Int) {

}

答案 1 :(得分:3)

否则,你怎么知道(val another: AnotherClass)是构造函数参数列表还是@Inject的参数?