Spring @ Fonasol

37
Spring Arquitectura de Aplicaciones Empresariales con Software Libre

Transcript of Spring @ Fonasol

Page 1: Spring @ Fonasol

SpringArquitectura de Aplicaciones Empresariales

con Software Libre

Page 2: Spring @ Fonasol

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

¿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

• 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

• 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

• 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

Continuación…

Page 8: Spring @ Fonasol

Componentes de Spring

Page 9: Spring @ Fonasol

Que dice la industria...

Page 10: Spring @ Fonasol

•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

•Integración y simplificación con JEE.–EJB–Session Bean•SLSB•SFSB

– JMS•JNDI•JMX•Java Mail

Características (cont).

Page 12: Spring @ Fonasol

•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

Escenario de uso: Spring en todas las capas

Page 14: Spring @ Fonasol

Escenario de uso: Framework web de terceros

Page 15: Spring @ Fonasol

Escenario de uso: Haciendo remoting

Page 16: Spring @ Fonasol

Escenario de uso: EJBs

Page 17: Spring @ Fonasol

Contenedor de IoC (Inversion of Control y Dependency Inyection)

ELEMENTOS BASICOS

Page 18: Spring @ Fonasol

•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

•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

• 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

•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

•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

•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

• 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

•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

•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

•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

¿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

¿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

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

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

Portafolio Spring

• Spring Security

• Spring WebServices

• Spring Ldap

• Spring Integration

• Spring Batch

• Spring .NET

Page 33: Spring @ Fonasol

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

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

Agradecimientos

• A mi familia que me dejo venir...

Page 36: Spring @ Fonasol

Preguntas

Page 37: Spring @ Fonasol

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