1

Я попробовал Google Guice в первый раз и нашел его очень приятным. Но, когда я достиг части Built-in Bindings, я не понимаю примеров.Как работают встроенные привязки Google Guice?

Для меня это похоже, что я могу использовать его для регистрации, как перехватчик, но я не знаю, как это сделать.

Может ли кто-то из вас объяснить этот тип привязки и как я могу его использовать? А может быть (если это возможно) использовать его для регистрации?

ответ

2

В документации указывается, что звонок bind(Logger.class).to(...) уже сделан для вас. Таким образом, вам не нужно вызывать метод bind. Вместо этого, вы можете вводить его непосредственно, как если бы вы уже назвали обязывать:

class DoSomething { 
    private final Logger logger; 
    @Inject public DoSomething(Logger logger) { 
     this.logger = logger; 
    } 
} 

В качестве альтернативы, вы можете получить его из инжектора:

/* even without specifying modules, logger is present */ 
Injector injector = Guice.createInjector(); 
Logger logger = injector.getInstance(Logger.class); 

Если вам необходимо изменить регистратор, то вы» Должно быть use this method.

+0

Спасибо! Это то, что я хочу знать. – lony

1

Весь пример, на который вы указываете, показывает, что вам не нужно предоставлять привязку для Logger.class в коде, таком как пример. Поскольку 99% -ый случай равен

Logger logger = Logger.getLogger(ConsoleTransactionLog.class); 

Guice предоставит вам регистратор для удобства. Если вам нужны разные регистраторы (т. Е. Не основанные на вводимом классе), вы можете предоставить свою собственную привязку.

+0

Возможно, это немного глупо, но могу ли я спросить вас, как я использую этот вариант? Я знаю только это (с заводом): приватный статический финал Log LOG = LogFactory.getLog (FrontLayer.class); , а не использовать его с LOG.debug ("bla"); – lony

+0

Я не знаю, какой пакет ведения журнала вы используете. Guice поддерживает «встроенную» поддержку для java.util.logging.Logger Если вы используете другой пакет протоколирования, вам нужно либо предоставить свою собственную привязку, либо как-то расширить Guice. –

+0

Я нормально использую Apache Commons Logging в сочетании с log4j. – lony

 Смежные вопросы

  • Нет связанных вопросов^_^