Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Guice Scala DI,了解如何_Scala_Guice - Fatal编程技术网

Guice Scala DI,了解如何

Guice Scala DI,了解如何,scala,guice,Scala,Guice,如果在我的模块文件中有@Provides注释返回一个对象,但我从未将其注入任何地方,是否会在scala中调用默认构造函数?根据Google Guice官方文档: @提供方法当您需要代码来创建对象时,请使用@Provides方法。该方法必须在模块中定义,并且必须具有@Provides注释。该方法的返回类型是绑定类型。每当注入器需要该类型的实例时,它都会调用该方法 因此,构造函数永远不会被调用 如果仍然需要构造对象,请使用com.google.inject.Singleton注释: import c

如果在我的模块文件中有@Provides注释返回一个对象,但我从未将其注入任何地方,是否会在scala中调用默认构造函数?

根据Google Guice官方文档:

@提供方法当您需要代码来创建对象时,请使用@Provides方法。该方法必须在模块中定义,并且必须具有@Provides注释。该方法的返回类型是绑定类型。每当注入器需要该类型的实例时,它都会调用该方法

因此,构造函数永远不会被调用

如果仍然需要构造对象,请使用
com.google.inject.Singleton
注释:

import com.google.inject._

class DbModule extends AbstractModule {

  @Provides
  @Singleton
  def helloWorld: HelloWorld = new HelloWorld();

}

class HelloWorld() {
  println("Hello world!")
}
将打印:

Hello world!

我想是的。您可以通过在默认构造函数中放入
println
来验证它。嘿@KumarKavish!“我的回答有用吗?”马修尔当然有用!谢谢很抱歉迟了答复