Entonces, estoy comenzando un nuevo proyecto en Java, y estoy considerando usar Spring. ¿Por qué estoy considerando la primavera? ¡Porque mucha gente me dice que debería usar Spring! En serio, cada vez que intento que la gente explique qué es exactamente Spring o qué hace, nunca me pueden dar una respuesta directa. He revisado las introducciones en el sitio SpringSource, y son realmente complicadas o están realmente centradas en los tutoriales, y ninguna de ellas me da una buena idea de por qué debería usarla o cómo me facilitará la vida. A veces las personas rechazan el término "inyección de dependencia", lo que me confunde aún más, porque creo que tengo una comprensión diferente de lo que significa ese término.
De todos modos, aquí hay un poco sobre mi experiencia y mi aplicación:
He estado desarrollando en Java por un tiempo, haciendo desarrollo web back-end. Sí, hago un montón de pruebas unitarias. Para facilitar esto, normalmente hago (al menos) dos versiones de un método: una que usa variables de instancia y otra que solo usa variables que se pasan al método. El que usa variables de instancia llama al otro, suministrando las variables de instancia. Cuando llega el momento de la prueba unitaria, uso Mockito para simular los objetos y luego hago llamadas al método que no usa variables de instancia. Esto es lo que siempre he entendido que es la "inyección de dependencia".
Mi aplicación es bastante simple, desde una perspectiva CS. Pequeño proyecto, 1-2 desarrolladores para comenzar. Principalmente operaciones de tipo CRUD con un montón de búsqueda. Básicamente, un montón de servicios web RESTful, más un front-end web y, finalmente, algunos clientes móviles. Estoy pensando en hacer el front-end en HTML / CSS / JS / JQuery directo, por lo que no hay planes reales para usar JSP. Usando Hibernate como ORM y Jersey para implementar los servicios web.
Ya comencé a codificar, y estoy ansioso por obtener una demostración que pueda comparar y ver si alguien quiere invertir. Entonces, obviamente, el tiempo es esencial. Entiendo que Spring tiene una curva de aprendizaje bastante grande, además parece que necesita una gran cantidad de configuración XML, que normalmente trato de evitar como la peste. Pero si puede hacerme la vida más fácil y (especialmente) si puede hacer que el desarrollo y las pruebas sean más rápidas, estoy dispuesto a morder la bala y aprender Spring.
Así que por favor. Educarme ¿Debo usar Spring? ¿Por qué o por qué no?