© Softtek Internal. Introducción a Spring Sesión 1: Introducción y teoría Juan Irungaray
© Softtek Internal. Agenda Introducción Componentes de Spring Inversión de control / Inyección de dependencias Configurando Spring: Metadata Instanciando un Bean Dependencias Autowiring Scopes Herencia
© Softtek Internal. Introducción Aplicaciones OO Arquitecturas variadas Complejidades variadas Gran cantidad de herramientas, frameworks y librerías Spring Facilita la construcción de aplicaciones Promueve el uso de buenas practicas Arquitectura probada, madura y estable Facilidad de extensión y customización
© Softtek Internal. Componentes de Spring
© Softtek Internal. Inversión de control Metadata Container Spring (BeanFactory) Objetos listos para usar Objetos de negocio (POJOs)
© Softtek Internal. Metadata
© Softtek Internal. Constructor Se especifica la clase del objeto con el atributo “class” El objeto creado es una instancia de esta clase Instanciando un Bean - Constructor
© Softtek Internal. Instanciando un Bean - Factory Factory – Método de clase Se especifica la clase Factory con el atributo “class” Se especifica el método que construye con el atributo “factory-method” Factory – Método de instancia No se define atributo “class” Se especifica el nombre de la instancia de Factory con el atributo “factory-bean” Se especifica el método que construye con el atributo “factory-method”
© Softtek Internal. Dependencias Inyección de dependencias Argumento del constructor Argumento del método factory Propiedades a ser insertadas Valores posibles Valores directos Colaboradores Beans internos Colecciones (List, Set, Map, Properties) Null
© Softtek Internal. Autowiring Se puede configurar particular en el elemento o en general en el elemento Reduce la necesidad de especificar alguna propiedades o argumentos de constructores. Facilita el mantenimiento y la “evolución automática” de la configuración. Configuraciones posibles No byName byType Constructor Autodetect Una propiedad o argumento especificado siempre tiene prioridad sobre un valor “autowired”
© Softtek Internal. Scopes Configuran como maneja Spring las instancias de una clase Existen 5 valores out of the box: Singleton Prototype Request (Solo para aplicaciones web) Session (Solo para aplicaciones web) Global Session (Solo para aplicaciones web-portlet)
© Softtek Internal. Herencia Permite extender y reutilizar definiciones de beans Bean Padre Bean Hijo La herencia de beans no representa ninguna relación entre los objetos que estos beans generan
© Softtek Internal. Repaso Spring es un framework líder, utilizado por empresas de todo tamaño. Spring permite componer una aplicación utilizando únicamente POJOs Facilita la integración entre tecnologías. Es una implementación de mejores practicas de programación. Esta diseñado para utilizar únicamente lo que uno necesita. Facilita la codificación y mejora la mantenibilidad de la aplicación(DI). Desacopla la lógica de la configuración.
© Softtek Internal. Capa de acceso de datos DAO Support Utilizando JDBC Integración con ORMs (Hibernate) Web MVC Framework Controllers Handler Mappings View Resolvers Integracion con Struts
© Softtek @Repository
© Softtek Internal. DAO Support Facilitar el acceso a tecnologías como JDBC, Hibernate, o JDO Provee una jerarquía de Excepciones consistente Provee clases homologas para acceder a las diferentes tecnologías JdbcDaoSupport HibernateDaoSupport JdoDaoSupport JpaDaoSupport
© Softtek Internal. DAO - JDBC Tareas necesarias en una conexión JDBC: 1. Definir parámetro de conexión 2. Abrir la conexión 3. Especificar un Statement 4. Preparar y ejecutar dicho Statement 5. Iterar sobre los resultados obtenidos 6. Hacer la tarea necesaria para cada iteracion del resultado 7. Manejar excepciones 8. Manejar transacciones 9. Cerrar conexión
© Softtek Internal. ORM Facilidad de testing Excepciones traducidas Manejo de recursos generales Manejo de transacciones integrados
© Softtek Internal. Hibernate HibernateTemplateHibernateDaoSupport
© Softtek Internal. Web MVC El archivo de contexto se debe llamar -servlet.xml y encontrarse en el directorio WEB-INF
© Softtek Internal. Web MVC framework Separación clara de roles Configuración de framework y aplicación a través de JavaBeans Adaptabilidad (No intrusivo) Reutilización de código de negocio Validación y binding customizables Mapeo de URLs y resolución de vistas customizable Soporte I18N Beans con Scope vinculados a request o sesiones HTTP. Controller Handler Mappings View Resolvers Locale Resolvers Theme Resolvers Multipart File Resolvers Exception Handler Resolvers
© Softtek Internal. Controllers Interpretan el input del usuario y lo transforman en un modelo a ser representado por la vista MultiActionController AbstractCommandController AbstractFormController SimpleFromController AbstractWizardFormController Utilizando la se puede utilizar cualquier clase como controller, no hace implementar o extender de nada
© Softtek Internal. Handler Mappings SimpleUrlHandlerMappingBeanNameUrlHandlerMapping El uso de handlerMappings se puede obviar utilizando annotations. Aunque se pueden combinar ambos estilos no es recomendado.
© Softtek Internal. View Resolvers AbstractCachingViewResolver XmlViewResolver ResourceBundleViewResolver UrlBasedViewResolver InternalResourceViewResolver VelocityViewResolver / FreeMarkerViewResolver
© Softtek Internal. Integracion con Struts Se utiliza Spring como si fuese una librería Para la integración hay 2 estrategias: Configurar Spring para manejar los Actions como Beans Extender ActionSupport
© Softtek Internal. Repaso Spring provee soporte para annotations (Java 5+), no solo para funcionalidad core sino para la capa de datos y la vista. El soporte DAO de Spring se encarga de todas las tareas de bajo nivel El soporte a la capa de datos es totalmente abstracto y se integra con los frameworks mas importantes del mercado La capa de web es totalmente agnóstica de la vista. Permite usar tanto Spring MVC como otros frameworks de manera simple y consistente.
© Softtek Internal. Referencias Spring Home Spring - Documentación -
© Softtek Internal. Q & A