2012-07-26 11 views
7

Estoy escribiendo una gran aplicación Java Red5 para la web. Red5 una alternativa de Flash Media Server que está basada en Java y está escrita con el marco de primavera.creando módulos reutilizables

Quiero tener muchas versiones de mi aplicación en línea, cada una con diferentes comportamientos y diferentes clases habilitadas o deshabilitadas.

Estoy buscando una manera de convertir mi código en módulos basados ​​en el código que me permitirá eliminar/agregar módulos/características de la aplicación principal.

Conozco OSGI http://www.springsource.org/osgi pero dice que necesita un servidor de dm SpringSource y no tengo idea de cómo va a funcionar en red5 y me parece muy complicado de entender.

No tengo un buen conocimiento del marco de primavera en general, trabajo con él relacionado con DB y eso es todo. red5 lo usa más extensamente.

¿alguien puede tener sentido con esta información? ¿hay algo que se pueda hacer para dividir mi código en módulos?

cualquier información con respecto al problema sería muy apreciada.

Respuesta

4

Mi método preferido para hacer frente a este tipo de situaciones es la Inyección de Dependencia (DI). Spring tiene una capacidad DI integrada, por lo que un tutorial es fácil de find online. Sin embargo, la DI de Spring no es tan buena, por muchas razones, como la proporcionada por Guice, que recomiendo encarecidamente. (La principal ventaja de Guice respecto a la DI de Spring en mi opinión es seguridad de tipo).

DI es básicamente un mecanismo para reemplazar implementaciones de clase en tiempo de ejecución. En lugar de las dependencias de códigos duros en clases (haciendo que una clase construya otras clases directamente, por ejemplo), las codifica para que les pasen sus clases dependientes en sus constructores. El marco DI pasará las instancias correctas en el tiempo de ejecución de acuerdo con la configuración. La configuración de Spring se puede hacer a través de anotaciones o un archivo XML. Guice usa una subclase de com.google.inject.AbstractModule.

Así que podría usar diferentes archivos de configuración para las diferentes instancias de su aplicación, y hacer que proporcionen diferentes conjuntos de características para la activación, o incluso diferentes implementaciones de la misma función. Si configura la aplicación para utilizar esta técnica, lo único que necesita diferir entre las instancias es un solo archivo de configuración.

+0

gracias. parece una alternativa increíble. – ufk

Cuestiones relacionadas