2016-06-02 4 views

ответ

3

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

В декларативных услугах этот фильтр можно изменить во время выполнения, предоставив конфигурацию для вашего компонента. В коде вы устанавливаете фильтр по умолчанию, как «prod» ниже.

@Reference(target="(profile=prod)") 
MyService myService; 

В конфигурации для компонента, где вы инъекционная услугу вы можете добавить свойство менять этот фильтр:

myService.target=(profile=dev) 

Еще более распространенным подходом является просто развертывать различные услуги для разработчика и прода , В вашем тесте вы развертываете фиктивную службу, а в prod вы развертываете реальный сервис. Преимущество такого подхода заключается в том, что он работает с любой картой DI в OSGi.

Смежные вопросы