2015-03-25 4 views
0

У меня есть интерфейс, как SomeProvider и несколько SomeProviderImpl s. Теперь я хочу зарегистрировать все свои реализации в центральном месте и иметь что-то вроде Registry.get(SomeProvider.class, param1, param2, ...) для запроса одной из реализаций.Есть ли простой служебный реестр для Java?

Поскольку OSGi и OSGi DS будут похожи на nuking fly, я собираюсь запустить свой простой и крошечный реестр, но я хотел знать, существует ли что-то подобное.

+0

Вы можете использовать фреймворк Spring и аннотировать ваш 'SomeProviderImpl' с помощью аннотации '@ Component', тогда вы можете получить все реализации, просмотрев все бобы в контексте Spring, которые реализуют интерфейс' SomeProvider'. – Jesper

ответ

1

В java есть java.util.ServiceLoader, что позволяет простую регистрацию и поиск сервисов.

+0

Это правильное решение. См. Также [Документация по ServiceLoader] (http://docs.oracle.com/javase/8/docs/api/java/util/ServiceLoader.html). Реализации даже не нужно регистрироваться. – VGR

+0

Спасибо, я посмотрю на это. – rabejens

+0

Это работает как шарм, маленький и простой, и даже часть стандартной библиотеки Java. Только то, что я хотел. Благодаря! – rabejens

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