Почему @PetiteInject не может внедрить сервис в DecoraManager? - PullRequest
0 голосов
/ 09 ноября 2018

У меня есть реализация DecoraManager: AppDecoraManager, и я хочу внедрить службу, например: FooService as:

@PetiteInject
FooService fooService;

Когда вызывается resolDecorator (), я хочу использовать fooService для определения некоторых параметров, но он имеетnull value.

В чем может быть причина этого и как я могу ее решить?

1 Ответ

0 голосов
/ 17 ноября 2018

DecoraManager создается контейнером сервлета в DecoraServletFilter.

На данный момент нет интеграции с существующим Petite IOC, поэтому вам нужно сделать следующее:

  • Во-первых, вам нужна публичная статическая ссылка на PetiteContainer. Сохраните его, например, при создании контейнера.
  • Переопределить createDecoraManager() в вашей реализации
  • Используйте PetiteContainer.wire(this) в своей реализации DecoraManager.

Пока это единственный способ сделать это.

Альтернатива будет такой:

  • Зарегистрируйтесь DecoraManager как @PetiteBean.
  • Снова получите статическую ссылку на PetiteContainer
  • В createDecoraManager используйте PetiteContainer.get(), чтобы получить экземпляр.

В первом примере DecoraManager становится просто подключенным; во втором примере он также сохраняется в контейнере Petite.

...