簡體   English   中英

Guice Scala DI,了解如何

[英]Guice Scala DI, understanding how

如果我在模塊文件中具有@Provides批注以返回對象,但我從未將其注入任何地方,是否會在scala中調用默認構造函數?

根據官方的Google Guice文檔: https : //github.com/google/guice/wiki/ProvidesMethods

@Provides方法當需要代碼來創建對象時,請使用@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!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM