Лучшие практики для использования инжектора Guice - PullRequest
0 голосов
/ 08 июня 2018

Из документации Guice:

 public static void main(String[] args) {
    /*
     * Guice.createInjector() takes your Modules, and returns a new Injector
     * instance. Most applications will call this method exactly once, in their
     * main() method.
     */
    Injector injector = Guice.createInjector(new BillingModule());

    /*
     * Now that we've got the injector, we can build objects.
     */
    BillingService billingService = injector.getInstance(BillingService.class);
    ...
  }

Итак, после всего этого обхода, если мне нужно будет вывести экземпляр моего BillingService из основного класса - мне нужно сохранить ссылку на переменную инжектора, чтобы сделать это?

Я имею в виду, что в другом классе мне нужно сделать что-то вроде этого:

BillingService billingService = MainClass.injector.getInstance(BillingService.class)

Чтобы получить экземпляр BillingService?Это не кажется элегантным для меня, есть ли другие способы сделать это?

1 Ответ

0 голосов
/ 08 июня 2018

Вот почему существуют модули.

Просто добавьте несколько модулей в ваш метод createInjector(...).

Если на ваш другой класс есть ссылки через ваши модули, вы можете просто написать следующее:

class PaymentService {
  @Inject BillingService billingService;
}

Я бы использовал класс «application», запускающий все, как у вас есть метод main, только внутри настроенных Guice классов.

...