Hay muy pocos inconvenientes en Spring
Pensé largo y tendido para encontrar algún inconveniente serio en el uso de Spring, y me temo que he fallado. Spring es un excelente conjunto de herramientas dentro de los modelos JEE / OSGi. Proporciona una amplia gama de plantillas no invasivas que simplifican enormemente el trabajo con las API de soporte a menudo engorrosas proporcionadas por los contenedores de aplicaciones.
Spring vs the core JEE
Spring no reemplaza las tecnologías JEE principales, bueno, quizás los EJB, pero con la nueva especificación EJB3 casi no contiene nada, en su lugar, proporciona plantillas para facilitar su uso. Considere JAX-RS la API de servicios web RESTful. Spring proporciona el RestTemplate
que normalmente se usa de la siguiente manera (se supone que está inyectado):
SomeJaxbAnnotatedClass object = restTemplate.getForObject(someURI,SomeJaxbAnnotatedClass.class);
Esto irá a someURI
obtener el XML / JSON / YAML y lo descomprimirá en el objeto de dominio que especifique. Todo en una sola línea de código.
Las excepciones y el registro de errores se manejan como excepciones de tiempo de ejecución, lo que facilita la limpieza del código local. Spring incluso trabaja para reducir las dependencias externas siempre que sea posible, por lo que el ejemplo anterior solo utiliza los paquetes java.net. *).
Hay plantillas para JMS, JAX-WS, JPA, JTA y así sucesivamente. Todos ellos hacen que sea mucho más fácil trabajar con estos estándares y hacer que su código sea más limpio y menos propenso a errores.
Pick'n'mix architecture
Desde un punto de vista arquitectónico, Spring enfatiza un enfoque ligero de pick'n'mix. Esto tiene el efecto de permitir que los arquitectos del sistema eviten el uso de contenedores de aplicaciones inflados para todos, como WebSphere, JBoss o Glassfish, y que elijan a sus homólogos de peso ligero en su lugar: Jetty, Tomcat, etc.
¿Por qué es esto importante? Los contenedores de aplicaciones más grandes tienen un ciclo de actualización mucho más largo que se adapta a las necesidades de algunos clientes más que otros. Los bancos no tienen que ser tan ágiles como una startup de un solo hombre.
Si desea utilizar la última verson de marcos de soporte, es poco probable que los encuentre en los grandes contenedores de aplicaciones. En su lugar, deberá incluirlos manualmente y Spring lo hace fácil.
Además, solo necesita incluir específicamente las tecnologías que necesita. Los contenedores de aplicaciones le darán JMS, EJB y todos los demás acrónimos bajo el sol, pero solo desea una fácil persistencia con JPA. Incluya Spring e Hibernate y listo.
Entonces, ¿por qué no Spring?
Evite Spring si quiere ir con las implementaciones de bibliotecas específicas del proveedor. Además, evítelo si desea mantener sus detalles de configuración dentro de sus clases en lugar de externalizarlos en XML o JNDI. Y definitivamente, evítelo si cree que las soluciones gratuitas y de código abierto no son adecuadas para su entorno.