Декларативные службы OSGi или ManagedService для настройки службы?

Я только недавно наткнулся на то, что Declarative Services в OSGi может настроить конфигурацию требуемого компонента, чтобы компонент получил его при активации, удалив промежуток между активацией и конфигурацией компонента. Я также понял, что вы можете получать обновления конфигурации с помощью метода modified.

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

Похоже, я мог полностью игнорировать ManagedService и просто использовать инъекцию конфигурации DS.

Один из этих методов предпочтительнее другого или есть другие компромиссы, которые я не вижу?

Ответ 1

Да, вы можете полностью игнорировать ManagedService и ManagedServiceFactory и просто использовать компоненты Declarative Services. И да, я бы рекомендовал этот подход.

Просто подумайте об этом как о разных уровнях абстракции. MS/MSF - это низкоуровневый API для config admin, и он доступен, даже если у вас нет пакета DS. Преимущество этого заключается в том, что вы можете писать настраиваемые сервисы, не завися от DS, что может быть желательно для определенных компонентов "системного уровня".

Однако, если вы счастливы зависеть от DS, например. для компонентов "уровня приложения", а затем использование встроенной интеграции DS с администратором config сделает вашу жизнь намного проще.