280 likes | 565 Views
Introducción a Spring . Sesión 1: Introducción y teoría . Juan Irungaray juan.irungaray@softtek.com. Agenda. Introducción Componentes de Spring Inversión de control / Inyección de dependencias Configurando Spring: Metadata Instanciando un Bean Dependencias Autowiring Scopes Herencia.
E N D
Introducción a Spring Sesión 1: Introducción y teoría Juan Irungaray juan.irungaray@softtek.com
Agenda • Introducción • Componentes de Spring • Inversión de control / Inyección de dependencias • Configurando Spring: Metadata • Instanciando un Bean • Dependencias • Autowiring • Scopes • Herencia
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
Inversión de control Objetos de negocio (POJOs) Metadata Container Spring (BeanFactory) Objetos listos para usar
Instanciando un Bean - Constructor • Constructor • Se especifica la clase del objeto con el atributo “class” • El objeto creado es una instancia de esta clase
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”
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
Autowiring • Se puede configurar particular en el elemento <bean> o en general en el elemento <beans> • 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”
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)
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
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.
Agenda • @nnotations • 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
@Component, @Service , @Repository & @Controller @PostConstruct & @PreDestroy @Autowired @Required @Resource @nnotations
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
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
ORM • Facilidad de testing • Excepciones traducidas • Manejo de recursos generales • Manejo de transacciones integrados
HibernateTemplate HibernateDaoSupport Hibernate
Web MVC El archivo de contexto se debe llamar <nombre del servlet>-servlet.xml y encontrarse en el directorio WEB-INF
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
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 annotation @Controller se puede utilizar cualquier clase como controller, no hace implementar o extender de nada
Handler Mappings • SimpleUrlHandlerMapping • BeanNameUrlHandlerMapping El uso de handlerMappings se puede obviar utilizando annotations. Aunque se pueden combinar ambos estilos no es recomendado.
View Resolvers • AbstractCachingViewResolver • XmlViewResolver • ResourceBundleViewResolver • UrlBasedViewResolver • InternalResourceViewResolver • VelocityViewResolver / FreeMarkerViewResolver
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
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.
Referencias • Spring • Home Spring - http://www.springsource.org/ • Documentación - http://static.springsource.org/spring/docs/2.5.x/reference/index.html