Как настроить Guice, чтобы требовать явных привязок для всего приложения (для всех модулей) - PullRequest
0 голосов
/ 07 января 2019

Чтобы использовать "явные" привязки с Guice, я могу вызвать binder().requireExplicitBindings() в моих реализациях модуля, например,

public class MyExampleModule extends AbstractModule {

    @Override
    protected void configure() {
        super.configure();
        binder().requireExplicitBindings();
        ...
    }
}

Что касается API Guice, для меня это выглядит так, как будто мне нужно сделать это в всех моих реализациях модулей моего приложения.

Нет ли способа настроить в одном месте для всего приложения?

Я использую Guice 4.2.x

1 Ответ

0 голосов
/ 07 января 2019

Параметры конфигурации Binder, такие как requireExplicitBindings(), являются глобальными для всех, где используется Binder. Так что, если вы не делаете что-то необычное с Guice SPI, это относится ко всем привязкам, которые являются частью одного и того же Injector.

Рекомендуется использовать только одно Injector для каждого приложения, поэтому параметры Binder уже являются глобальными.

Для чего бы это ни стоило, я думаю requireExplicitBindings() - это перебор. Что-то вроде requireAtInjectOnConstructors() решает самые вопиющие проблемы с неявными связываниями, но в то же время допускает внедрение зависимостей JSR-330 на основе аннотированных конструкторов, что может быть очень удобной функцией.

...