2012-07-26 4 views
7

Я пишу большое приложение Java Red5 для Интернета. Red5 альтернатива Flash Media Server, основанная на Java, и написанная с использованием фреймворка.создание многоразовых модулей

Я хочу иметь множество версий моего приложения онлайн, каждый с разными поведением и разными классами, включенными или отключенными.

Я ищу способ преобразования моего кода в код на основе модулей, который позволит мне удалить/добавить модули/функции из основного приложения.

Я знаю об OSGI http://www.springsource.org/osgi, но он говорит, что ему нужен сервер ds SpringSource, и я понятия не имею, как он будет работать вместе в red5, и это кажется очень сложным для полного понимания.

У меня нет хороших знаний о весеннем каркасе вообще, я работаю с ним связанным с db и все. red5 использует его более широко.

так может ли кто-нибудь понять смысл этой информации? есть ли что-то, что можно сделать, чтобы разделить мой код на модули?

вся информация относительно выпуска была бы принята с благодарностью.

ответ

4

Мой предпочтительный метод решения этой ситуации - это инъекция зависимостей (DI). Spring имеет встроенную функцию DI, для которой учебное пособие легко для find online. Тем не менее, DI DI Spring не так хорош по многим причинам, как это предусмотрено Guice, что я бы очень рекомендовал. (Главным преимуществом Guice over Spring DI, на мой взгляд, является безопасность типа.)

DI - это в основном механизм замены реализации классов во время выполнения. Вместо жестких зависимостей кода в классах (например, если у вас есть класс, строя другие классы, например), вы кодируете их, чтобы их зависимые классы передавались им в своих конструкторах. Затем структура DI будет передавать правильные экземпляры во время выполнения в соответствии с конфигурацией. Конфигурация Spring может быть выполнена с помощью аннотаций или XML-файла, Guice использует подкласс com.google.inject.AbstractModule.

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

+0

спасибо. выглядит как удивительная альтернатива. – ufk

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