Es posible que desee incluir Spring en su lista de marcos de inyección de dependencia que está considerando. Aquí hay algunas respuestas a sus preguntas:
Acoplamiento al marco
Pico : Pico tiende a desalentar la inyección de setter, pero aparte de eso, sus clases no necesitan saber sobre Pico. Es solo el cableado lo que necesita saber (cierto para todos los marcos DI).
Guice - Guice ahora admite las anotaciones JSR 330 estándar , por lo que ya no necesita anotaciones específicas de Guice en su código. Spring también admite estas anotaciones estándar. El argumento que usan los chicos de Guice es que sin un procesador de anotaciones Guice en ejecución, estos no deberían tener un impacto si decide usar un marco diferente.
Spring : Spring tiene como objetivo permitirle evitar cualquier mención del marco Spring en su código. Sin embargo, debido a que tienen muchos otros ayudantes / utilidades, etc., la tentación es bastante fuerte de depender del código Spring.
Actuación
Pico : no estoy muy familiarizado con las características de velocidad de Pico
Guice - Guice fue diseñado para ser rápido y la comparación mencionada en la referencia tiene algunos números. Ciertamente, si la velocidad es una consideración principal, se debe considerar el uso de Guice o el cableado a mano.
Primavera : la primavera puede ser lenta. Se ha trabajado para hacerlo más rápido y el uso de la biblioteca JavaConfig debería acelerar las cosas.
Facilidad de uso
Pico : fácil de configurar. Pico puede tomar algunas decisiones sobre el cableado automático por usted. No está claro cómo se adapta a proyectos muy grandes.
Guice : fácil de configurar, solo agrega anotaciones y hereda de AbstractModule para unir las cosas. Se adapta bien a proyectos grandes ya que la configuración se mantiene al mínimo.
Spring : relativamente fácil de configurar, pero la mayoría de los ejemplos usan Spring XML como método de configuración. Los archivos Spring XML pueden volverse muy grandes y complejos con el tiempo y tardar en cargarse. Considere usar una mezcla de Spring y Dependency Injection con manivela para superar esto.
Tamaño de la comunidad
Pico - Pequeño
Guice - Medio
Primavera - Grande
Experiencia
Pico : no he tenido mucha experiencia con Pico, pero no es un marco muy utilizado, por lo que será más difícil encontrar recursos.
Guice : Guice es un marco popular y su enfoque en la velocidad es bienvenido cuando tienes un gran proyecto que estás reiniciando mucho en desarrollo. Me preocupa la naturaleza distribuida de la configuración, es decir, no es fácil ver cómo se arma toda nuestra aplicación. Es un poco como AOP a este respecto.
Primavera : la primavera suele ser mi opción predeterminada. Dicho esto, el XML puede volverse engorroso y la desaceleración resultante molesta. A menudo termino usando una combinación de Dependency Injection y Spring hechos a mano. Cuando realmente necesita una configuración basada en XML, Spring XML es bastante bueno. Spring también hizo un gran esfuerzo para hacer que otros marcos fueran más amigables con la inyección de dependencias, lo que puede ser útil porque a menudo usan las mejores prácticas al hacerlo (JMS, ORM, OXM, MVC, etc.).
Referencias