2012-04-05 8 views
0

Hi: Я хочу запустить операцию сразу после того, как Guice «увлажняет» мой класс необходимыми параметрами. Каков идиоматический способ сделать это? Есть ли аннотация @after_running_constructor ... или что-то вроде того, что я могу пометить метод инициализатора post-guice?Когда вводится лиз?

Как правило, я просто делал это в методе init() или в самом конструкторе, но оказывается, что Guice не вводит необходимую информацию в мой класс до тех пор, пока не будет запущен конструктор класса.

ответ

3

Единственный идиоматический способ убедиться, что ваш класс получил все необходимые «параметры», чтобы передать эти параметры конструктору. См. Краткую дискуссию о изменчивости here.

Если у вас возникли проблемы с использованием инъекции конструктора, поскольку конструкция включает в себя как инжекцию, так и параметризацию, вы можете либо использовать заводскую модель, либо AssistedInject.

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

+0

yes thats true - внутренности не важны - они были более контекстуализированы. благодаря – jayunit100

1

У Guice нет поддержки методов жизненного цикла. Аналогичный вопрос был задан here, и люди там рекомендовали расширенную библиотеку Guice GuiceyFruit, но я не уверен, что проект поддерживается.

Кроме того, заказ, который вводит Guice, определен в документах here.

Мне любопытно, почему бы вам сделать как конструктор, так и метод инъекции для вашего класса? Я уверен, что есть некоторые варианты использования, но вы можете решить проблему init(), просто используя исключительно инсталляцию конструктора.

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