Spring - как избежать блокировки реализации между сотрудничающими сервисами - PullRequest
2 голосов
/ 10 февраля 2011

Я пишу небольшую структуру, которая использует пружину для DI. У меня есть ряд служб, которые сотрудничают друг с другом.

ServiceA имеет ссылку на ServiceB - имеет ссылку на ServiceC и т. Д. Все они предварительно смонтированы в весенней конфигурации xml.

Проблема возникает, когда пользователь пытается переопределить одну из этих реализаций, скажем, ServiceB, своей собственной, скажем, ChildServiceB. Теперь я действительно хочу, чтобы пользователи ChildSerivceB были подключены к ServiceA. Можно ли это сделать весной? Если нет, то какой шаблон проектирования лучше всего подходит для этого сценария?

Что-то вроде поздней привязки к весне - это то, что я ищу.

Я бы хотел, чтобы в таких сценариях конфигурация пружины пользователя была как можно меньше.

Другие примечания:

Я использую интерфейсы для всех своих сервисов

Чтобы людям, использующим службы по умолчанию, было легко, в jar-файле предоставляется spring congiuration framework-beans.xml, им просто нужно создать его экземпляр.

Пользователи, которые хотят переопределить реализации, могут создавать свои собственные beans.xml, но вот где я озадачен, как они переопределяют «проводку» framework-beans.xml?

1 Ответ

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

Проблема возникает, когда пользователь пытается переопределить одну из этих реализаций, скажем ServiceB, своей собственной, скажем ChildServiceB.Теперь я действительно хочу, чтобы пользователи ChildSerivceB были подключены к ServiceA.Можно ли это сделать весной?Если нет, то какой шаблон проектирования лучше подходит для этого сценария?

1 Использовать программирование интерфейса
2 Позволить пользователю реализовать собственную службу для ServiceB
3 Настройте Bean в Spring xml

<bean name="serviceB" class="com.something.DefaultServiceBImpl"/>

сейчас, если вы хотите, чтобы у пользователя была своя собственная реализация, просто измените его на

<bean name="serviceB" class="com.something.CustomServiceBImpl"/>

ив классе использовать интерфейс

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