весной, как лучше всего динамически создавать различные объекты определенного класса, каждый из которых может получить доступ к бобу Spring? - PullRequest
1 голос
/ 10 февраля 2012

Скажем, у меня есть файл с каждой строкой, изображающей разные команды (но одного и того же типа), которые я хочу прочитать, проверить и запустить, и, возможно, выполнять другие операции, такие как объединение, сравнение и, самое главное, сохранение команд в базу данных.

Для этого я создаю класс Command и new новый объект Command при чтении каждой строки файла. Теперь проблема в том, что объект Command должен использовать, скажем, bean-компонент Spring, который обеспечивает доступ к базе данных. В результате я должен передать этот bean-компонент в качестве аргумента конструктора класса Command, что очень уродливо, что не похоже на «весенний путь» ... и я не хочу использовать ApplicationContextAware, чтобы связать мой класс с контекстом Spring.

Есть ли лучшая практика для этой ситуации?

Я очень новичок в Spring и знаю, что это может быть глупый вопрос ...

Ответы [ 2 ]

1 голос
/ 10 февраля 2012

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

0 голосов
/ 10 февраля 2012

В этом случае я думаю, что это лучший способ создать классы, созданные new Spring Beans.

Для этого аннотируйте их с помощью @Configurable, включите AspectJ и прочитайте ссылку на Spring Глава 7.8.1 Использование AspectJ для добавления объектов домена в зависимости от Spring

...