Как правильно использовать бины Spring внутри объектов, которые не управляются контейнером Spring? - PullRequest
0 голосов
/ 12 июля 2010

У меня есть бин Spring (одноэлементная область, если это имеет значение), давайте назовем его FooService.

И у меня есть объект Bar, которым Spring не управляет, но он хочет использовать FooService.

Как реализовать это сотрудничество наилучшим образом?(Предположим, что мне не нравится решение с applicationContext.getBean()).

Ответы [ 4 ]

1 голос
/ 12 июля 2010

AOP - это опция, если вы хотите внедрить зависимости в объекты, которые не созданы контейнером IoC. Взгляните на Spring @Configurable - я вставил бы ссылку на вопрос переполнения стека по этой теме, но мой cut-n-paste в настоящее время не работает.

1 голос
/ 12 июля 2010

Вызовите «new» в конструкторе Bar и создайте экземпляр FooService для его использования.

0 голосов
/ 12 июля 2010

Кто создает экземпляр Bar?Вы не упомянули об этом.

Если для экземпляра Bar требуется FooService, то вам нужно вставить последний в Bar с помощью инжектора конструктора или сеттера.если вы хотите, чтобы FooService управлялся Spring, но не Bar, тогда у вас действительно есть только несколько опций:

  1. В коде, который создает экземпляр Bar, передайте ему ссылку наFooService из вашего приложенияContext
  2. Так же просто - используйте Spring для управления жизненным циклом экземпляра Bar.
0 голосов
/ 12 июля 2010

В идеале bean-компонент Spring - это обычный объект Java или POJO. Если это не Spring, то вам придется управлять им самостоятельно. В идеале вызывайте new или что-то вроде getInstance метода, а затем отслеживайте ссылку самостоятельно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...