Introducción a Spring Framework, ventajas y diferencias con Play Framework 1.x usado en Grashirts para desarrollar aplicaciones, especialmente APIs REST e integradas con MongoDB.
https://medium.com/grayshirts/play-o-spring-2b9091476380
2. Pros y Cons comparado
con Play 1.x
Ventajas
●
Framework Java más popular del mercado.
●
+10 años de desarrollo ininterrumpido.
●
Gran ecosistema de plugins, comunidades,
empresas ...
●
Integraciones “out-of-the-box”, o hechas por
terceros con múltiples tecnologías.
●
En constante evolución, pero manteniendo
una gran compatibilidad hacia atrás.
●
Muy modular.
Desventajas
●
Requiere más código y configuración.
●
Curva de aprendizaje ligeramente superior
para aprender a usarlo, y aún mayor para
configurarlo.
●
Arranques más lentos (luego la velocidad de respuesta
a simple observación es similar).
●
Hot reload menos inteligente → más restarts en
desarrollo para probar cambios.
3. Diferencias
Play 1.x
➔
Clases con métodos estáticos.
➔
Convención por nombres y ubicación.
➔
Simple para implementar CRUDs gracias al
módulo “crud”.
➔
Sin soporte especial para crear APIs REST: no
soporta JSON, pobre binding de parámetros y
no soportaría el verbo PATCH.
➔
Toolkit de building propio y sencillo, pero pobre
en integración con herramientas de terceros.
Spring
➔
Clases instanciables, objetos singleton
➔
@Annotations
➔
No posee un módulo CRUD, pero un buen
reemplazo puede ser JHipster.
➔
Especial soporte para desarrollar APIs
REST/SOA, e integración con Swagger y otros
documentadores y CRUDs de APIs.
➔
Independiente del sistema de building, funciona
y tiene especial soporte con Maven y Gradle,
heredando sus comunidades de plugins.
4. Spring + MongoDB
●
Soporta últimas versiones de Morphia, y últimas versiones del driver de
MongoDB
– Soporta nuevos features en Mongo 3+
– @Reference caches
y lazy initializations funcionan OK
– Aggregation framework
●
Group, SUM, AVG, Left Joins !!!!
●
Integraciones probadas: Clusters, Mongeez, Fongo, ...
Y
5. Spring Core: Singleton +
Inyección de Dependencias
●
Ventajas (Dependency Injection motivations - Play 2.5 que explica porqué migraron al mismo
esquema que Spring):
– It allows you to easily bind different implementations for the same component. This is useful especially for
testing, where you can manually instantiate components using mock dependencies or inject an alternate
implementation.
– It allows you to avoid global static state. While static factories can achieve the first goal, you have to be careful
to make sure your state is set up properly. In particular Play’s (now deprecated) static APIs require a running
application, which makes testing less flexible. And having more than one instance available at a time makes it
possible to run tests in parallel.
●
Desventajas:
– Requiere más configuración.
– El “ciclo de vida” y los “scopes” de los distintos objetos a veces complican la “visibilidad” entre los objetos.
6. Referencias y puntos de partida
●
Spring Boot
●
Spring Initializr
●
Spring.io
●
JHipster
●
Spring Mongo demo