Использование Dependency Injection весной для замены шаблона Factory - PullRequest
1 голос
/ 14 марта 2011

В настоящее время я работаю над приложением, в которое экземпляр объекта D домена внедрен в приложение.Доменный объект может содержать много классов вместе в различных комбинациях и перестановках, как определено его bean-компонентом, и, следовательно, приводит ко многим различным конечным объектам D, которые я называю различными версиями D. Для данной версии D я должен заполнитьПримитивные значения в нем, а затем сохранить его в базе данных.Сохранить его в базе данных довольно просто, используя JPA и Hibernate.Проблема заключается в заполнении значений в D. Значения выбираются по сети с использованием SNMP, а затем заполняются.Для каждой версии D существует своя стратегия, так как каждая версия D может иметь разные MIB.В настоящее время я следую заводскому образцу.Фабрика берет версию D и возвращает valueRetriever для конкретной для этой версии D, которая затем используется для извлечения значений и заполнения D.

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

У меня такой вопрос: может ли быть лучший способ получить конфигурации, т.е. иметь valueRetriever с учетом вышеописанного сценария, используя внедрение зависимостей.

Редактировать : Может ли AOP здесь использоваться

Ответы [ 2 ]

2 голосов
/ 14 марта 2011

Кажется, что некоторые объекты, которые вам нужны для создания, имеют сложную логику создания. Вы можете не смотреть на интерфейс Spring FactoryBean, поскольку FactoryBean может получать все сложные детали по сети, позволяя вам создать экземпляр и затем внедрить его в другие компоненты.

0 голосов
/ 14 марта 2011

Основой Spring DI является Фабрика бинов / контекст приложения, поэтому вполне возможно заменить то, что вы делаете.

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

ОБНОВЛЕНИЕ: я бы начал опасаться, что ваше решение Spring добавляет слишком много незнакомых технологий в слишком сложную ситуацию.

Вдохни и подумай "просто".

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

...