Spring @ Fonasol
-
Upload
domingo-suarez-torres -
Category
Technology
-
view
1.846 -
download
0
Transcript of Spring @ Fonasol
![Page 1: Spring @ Fonasol](https://reader033.fdocuments.ec/reader033/viewer/2022052600/557a5fe2d8b42a6e5a8b51a5/html5/thumbnails/1.jpg)
SpringArquitectura de Aplicaciones Empresariales
con Software Libre
![Page 2: Spring @ Fonasol](https://reader033.fdocuments.ec/reader033/viewer/2022052600/557a5fe2d8b42a6e5a8b51a5/html5/thumbnails/2.jpg)
Trasfondo
• JEE es complicado
• Métodos ágiles
• Proceso de desarrollo integrado
• Diseño OO basado en negocio
• Ingeniería de software
![Page 3: Spring @ Fonasol](https://reader033.fdocuments.ec/reader033/viewer/2022052600/557a5fe2d8b42a6e5a8b51a5/html5/thumbnails/3.jpg)
¿Que es Spring?
• Spring es un framework open-source, presentado y desarrollado en 2003. Las ideas principales fueron concebidas por el experimentado arquitecto JEE, Rod Johnson.
• Es una alternativa para el desarrollo JEE, pero no solo para JEE.
![Page 4: Spring @ Fonasol](https://reader033.fdocuments.ec/reader033/viewer/2022052600/557a5fe2d8b42a6e5a8b51a5/html5/thumbnails/4.jpg)
• Spring a menudo es descrito como un framework “ligero” para construir aplicaciones Java.
• No esta enfocado a una parte especifica de una aplicación. (i.e. Struts, JSF, Hibernate)
• Spring es “ligero” porque para usarlo en una aplicación no hay que hacer muchos cambios, en ocasiones ninguno. Esto al menos para usar el “Core” de Spring.
• Impacto mínimo. Principio de la filosofía de Spring.
Continuación…
![Page 5: Spring @ Fonasol](https://reader033.fdocuments.ec/reader033/viewer/2022052600/557a5fe2d8b42a6e5a8b51a5/html5/thumbnails/5.jpg)
• Porque reduce la complejidad de desarrollo JEE
• Simplificar sin sacrificar poder.
• Facilitar mejores practicas, que de otra manera son difíciles seguir.
• Porque nace de la experiencia práctica de muchos desarrolladores en todo el mundo.
¿Por qué Spring?
![Page 6: Spring @ Fonasol](https://reader033.fdocuments.ec/reader033/viewer/2022052600/557a5fe2d8b42a6e5a8b51a5/html5/thumbnails/6.jpg)
• Desarrollar aplicaciones usando POJOs.
• Spring ofrece capacidades avanzadas de configuración que permiten escalar a una complejidad del mundo real.
• Permite aplicar servicios empresariales a los POJOs, de forma declarativa y no invasiva.
Continuación…
![Page 7: Spring @ Fonasol](https://reader033.fdocuments.ec/reader033/viewer/2022052600/557a5fe2d8b42a6e5a8b51a5/html5/thumbnails/7.jpg)
Continuación…
![Page 8: Spring @ Fonasol](https://reader033.fdocuments.ec/reader033/viewer/2022052600/557a5fe2d8b42a6e5a8b51a5/html5/thumbnails/8.jpg)
Componentes de Spring
![Page 9: Spring @ Fonasol](https://reader033.fdocuments.ec/reader033/viewer/2022052600/557a5fe2d8b42a6e5a8b51a5/html5/thumbnails/9.jpg)
Que dice la industria...
![Page 10: Spring @ Fonasol](https://reader033.fdocuments.ec/reader033/viewer/2022052600/557a5fe2d8b42a6e5a8b51a5/html5/thumbnails/10.jpg)
•AOP–Facilita la implementación de soluciones a problemas recurrentes, incluso en contextos diferentes.
•Acceso a datos.– Integración con Hibernate, Jdbc, iBatis, JPA.
•Administración de transacciones.–Capa de abstracción para manejo de transacciones.
Características
![Page 11: Spring @ Fonasol](https://reader033.fdocuments.ec/reader033/viewer/2022052600/557a5fe2d8b42a6e5a8b51a5/html5/thumbnails/11.jpg)
•Integración y simplificación con JEE.–EJB–Session Bean•SLSB•SFSB
– JMS•JNDI•JMX•Java Mail
Características (cont).
![Page 12: Spring @ Fonasol](https://reader033.fdocuments.ec/reader033/viewer/2022052600/557a5fe2d8b42a6e5a8b51a5/html5/thumbnails/12.jpg)
•Spring en Web.
•SpringMVC
•JSP
•Velocity
•Struts
•JSF
•Calendarización de Procesos
•Quartz
•Manejo de excepciones simplificado
•Evita el tedioso manejo de excepciones.
•Cátedra de manejo de excepciones.
Características (cont).
![Page 13: Spring @ Fonasol](https://reader033.fdocuments.ec/reader033/viewer/2022052600/557a5fe2d8b42a6e5a8b51a5/html5/thumbnails/13.jpg)
Escenario de uso: Spring en todas las capas
![Page 14: Spring @ Fonasol](https://reader033.fdocuments.ec/reader033/viewer/2022052600/557a5fe2d8b42a6e5a8b51a5/html5/thumbnails/14.jpg)
Escenario de uso: Framework web de terceros
![Page 15: Spring @ Fonasol](https://reader033.fdocuments.ec/reader033/viewer/2022052600/557a5fe2d8b42a6e5a8b51a5/html5/thumbnails/15.jpg)
Escenario de uso: Haciendo remoting
![Page 16: Spring @ Fonasol](https://reader033.fdocuments.ec/reader033/viewer/2022052600/557a5fe2d8b42a6e5a8b51a5/html5/thumbnails/16.jpg)
Escenario de uso: EJBs
![Page 17: Spring @ Fonasol](https://reader033.fdocuments.ec/reader033/viewer/2022052600/557a5fe2d8b42a6e5a8b51a5/html5/thumbnails/17.jpg)
Contenedor de IoC (Inversion of Control y Dependency Inyection)
ELEMENTOS BASICOS
![Page 18: Spring @ Fonasol](https://reader033.fdocuments.ec/reader033/viewer/2022052600/557a5fe2d8b42a6e5a8b51a5/html5/thumbnails/18.jpg)
•Técnica que externaliza la creación y manejo de las dependecias de componentes.
• IoC tambien es conocido como Dependency Injection (DI).
•La implementación de DI de Spring esta basado en dos conceptos clave de Java: JavaBeans e Interfases.
Inversion of Control
![Page 19: Spring @ Fonasol](https://reader033.fdocuments.ec/reader033/viewer/2022052600/557a5fe2d8b42a6e5a8b51a5/html5/thumbnails/19.jpg)
•En el contexto de DI, Spring actua más como un contenedor que como un framework.
–Nos provee instancias de clases de nuestra aplicación con todas las dependencias que ellas necesitan.
–Usando JavaBeans se facilita esta labor del contenedor.
Continuación…
![Page 20: Spring @ Fonasol](https://reader033.fdocuments.ec/reader033/viewer/2022052600/557a5fe2d8b42a6e5a8b51a5/html5/thumbnails/20.jpg)
• Reduce el código de plomería.
– El contenedor se encarga de muchas cosas por nosotros.
• Externalizan las dependencias.
– No es necesario que recompilar la aplicación para alterar las dependencias.
•Administración de las dependencias en un solo sitio.
Ventajas de DI
![Page 21: Spring @ Fonasol](https://reader033.fdocuments.ec/reader033/viewer/2022052600/557a5fe2d8b42a6e5a8b51a5/html5/thumbnails/21.jpg)
•Mejora la prueba del software (TDD).
– Facilita intercambiar implementaciones.
–Uso de mocks para probar.
– Ejecución de pruebas muy rápidas.
•Permite mejor diseño de aplicaciones.
– Se diseña orientado a interfases.
Continuación…
![Page 22: Spring @ Fonasol](https://reader033.fdocuments.ec/reader033/viewer/2022052600/557a5fe2d8b42a6e5a8b51a5/html5/thumbnails/22.jpg)
•Solidez en sus abstracciones demuestran un gran valor en un amplio rango de entornos.
•Adopción estrategica en muchas empresas, evitando los enfoques ineficientes existentes JEE.
Valores de Spring
![Page 23: Spring @ Fonasol](https://reader033.fdocuments.ec/reader033/viewer/2022052600/557a5fe2d8b42a6e5a8b51a5/html5/thumbnails/23.jpg)
•En Spring, los objetos que forman la columna vertebral de una aplicación son administrados por el contenedor IoC.
•En Spring, a dichos objetos se les conoce como Beans.
•Un Bean es cualquier objeto simple el cual es instanciado y administrado por el Contenedor IoC.
•La definición de los Beans y sus relaciones es expresada a través de diversos mecanismos de configuración.
•El contenedor es representado por implementaciones de org.springframework.beans.factory.BeanFactory
El contenedor de beans de Spring (IoC Container)
![Page 24: Spring @ Fonasol](https://reader033.fdocuments.ec/reader033/viewer/2022052600/557a5fe2d8b42a6e5a8b51a5/html5/thumbnails/24.jpg)
• Existen varias implementaciones de BeanFactory, la más común
org.springframework.beans.factory.xml.XmlBeanFactory
– Esta implementación permite expresar a los objetos de una aplicación así como sus relaciones en términos de XML.
El contenedor de beans
![Page 25: Spring @ Fonasol](https://reader033.fdocuments.ec/reader033/viewer/2022052600/557a5fe2d8b42a6e5a8b51a5/html5/thumbnails/25.jpg)
•DI es un mecanismo para proveer dependencias de componentes (colaboradores).
•Además de manejar esas dependencias en su ciclo de vida.
•Un componente que requiere una dependencia es llamado objeto dependiente. (dependent object)
Explicando IoC y DI
![Page 26: Spring @ Fonasol](https://reader033.fdocuments.ec/reader033/viewer/2022052600/557a5fe2d8b42a6e5a8b51a5/html5/thumbnails/26.jpg)
•Dependency Injection
– El contenedor es encargado de inyectar las dependencias.
•Dependency lookup
– Dependency Pull
•Similar a los lookups en JNDI.
•Ejemplo en la prueba de unidad del Lab2.
– Contextualized Dependency Lookup (CDL)
Tipos de IoC
![Page 27: Spring @ Fonasol](https://reader033.fdocuments.ec/reader033/viewer/2022052600/557a5fe2d8b42a6e5a8b51a5/html5/thumbnails/27.jpg)
•La dependencias se inyectan en el constructor del objeto:
public class ConstructorInjection {
private String depen;
public ConstructorInjection(String depen) {
this.depen = depen;
}
}
Inyección de dependencia por constructor.
![Page 28: Spring @ Fonasol](https://reader033.fdocuments.ec/reader033/viewer/2022052600/557a5fe2d8b42a6e5a8b51a5/html5/thumbnails/28.jpg)
¿Que beneficio obtengo con DI?
• Reducir el acoplamiento
• Nunca mas programar el patrón de diseño Factory con todos sus sabores:
• Abstracción total de como se cablea tu aplicación.
![Page 29: Spring @ Fonasol](https://reader033.fdocuments.ec/reader033/viewer/2022052600/557a5fe2d8b42a6e5a8b51a5/html5/thumbnails/29.jpg)
¿Que más rodea a Spring?
• Spring es la base de una serie de herramientas más especificas.
• Cada herramienta hace una cosa y la hace muy bien.
![Page 30: Spring @ Fonasol](https://reader033.fdocuments.ec/reader033/viewer/2022052600/557a5fe2d8b42a6e5a8b51a5/html5/thumbnails/30.jpg)
Aplicaciones Empresariales
• Integración con sistemas legados
• Arquitecturas Orientadas a Servicios
• Acceso a múltiples bases de datos
• Control transaccional elemental.
![Page 31: Spring @ Fonasol](https://reader033.fdocuments.ec/reader033/viewer/2022052600/557a5fe2d8b42a6e5a8b51a5/html5/thumbnails/31.jpg)
Spring y Servidores de aplicaciones
• Spring es independiente del servidor de aplicaciones
• Certificado para Weblogic, Websphere
• Uso comprobado en JBoss, Glassfish
![Page 32: Spring @ Fonasol](https://reader033.fdocuments.ec/reader033/viewer/2022052600/557a5fe2d8b42a6e5a8b51a5/html5/thumbnails/32.jpg)
Portafolio Spring
• Spring Security
• Spring WebServices
• Spring Ldap
• Spring Integration
• Spring Batch
• Spring .NET
![Page 33: Spring @ Fonasol](https://reader033.fdocuments.ec/reader033/viewer/2022052600/557a5fe2d8b42a6e5a8b51a5/html5/thumbnails/33.jpg)
Resumen
• Spring es una base solida para buenas arquitecturas
• Spring ayuda a reducir considerablemente el código de plomería.
• Spring no sustituye a JEE ni intenta hacerlo.
![Page 34: Spring @ Fonasol](https://reader033.fdocuments.ec/reader033/viewer/2022052600/557a5fe2d8b42a6e5a8b51a5/html5/thumbnails/34.jpg)
Resumen
• Spring es exitoso porque es un proyecto OpenSource con licencia que permite desarrollos comerciales cerrados.
• Spring usa Apache License 2.0
![Page 35: Spring @ Fonasol](https://reader033.fdocuments.ec/reader033/viewer/2022052600/557a5fe2d8b42a6e5a8b51a5/html5/thumbnails/35.jpg)
Agradecimientos
• A mi familia que me dejo venir...
![Page 36: Spring @ Fonasol](https://reader033.fdocuments.ec/reader033/viewer/2022052600/557a5fe2d8b42a6e5a8b51a5/html5/thumbnails/36.jpg)
Preguntas
![Page 37: Spring @ Fonasol](https://reader033.fdocuments.ec/reader033/viewer/2022052600/557a5fe2d8b42a6e5a8b51a5/html5/thumbnails/37.jpg)
Recursos
• http://www.springframework.org
• http://www.SpringHispano.org
• http://groovy.org.es
• http://grails.org.mx Próximamente.
• http://www.domingosuarez.com
• http://www.domix.org