Guice Scala DI, понимая, как - PullRequest
0 голосов
/ 10 мая 2019

Будет ли вызываться конструктор по умолчанию в scala, если у меня в файле модуля есть аннотация @Provides для возврата объекта, но я нигде его не внедряю?

1 Ответ

1 голос
/ 10 мая 2019

Согласно официальной документации Google Guice: https://github.com/google/guice/wiki/ProvidesMethods

@ Предоставляет методы Когда вам нужен код для создания объекта, используйте метод @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!
...