© Softtek 2009. Internal.
Introducción a Spring Sesión 1: Introducción y teoría
Juan Irungaray
© Softtek 2009. 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 2009. Internal.
Introducción
Aplicaciones OOArquitecturas variadas
Complejidades variadas
Gran cantidad de herramientas, frameworks y librerías
SpringFacilita la construcción de aplicaciones
Promueve el uso de buenas practicas
Arquitectura probada, madura y estable
Facilidad de extensión y customización
© Softtek 2009. Internal.
Componentes de Spring
© Softtek 2009. Internal.
Inversión de control
Metadata
Container Spring (BeanFactory)
Objetos listos para usar
Objetos de negocio (POJOs)
© Softtek 2009. Internal.
Metadata
© Softtek 2009. 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 2009. Internal.
Instanciando un Bean - Factory
Factory – Método de claseSe especifica la clase Factory con el atributo “class”
Se especifica el método que construye con el atributo “factory-method”
Factory – Método de instanciaNo 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 2009. Internal.
Dependencias
Inyección de dependenciasArgumento del constructor
Argumento del método factory
Propiedades a ser insertadas
Valores posiblesValores directos
Colaboradores
Beans internos
Colecciones (List , Set, Map, Properties)
Null
© Softtek 2009. Internal.
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 posiblesNo
byName
byType
Constructor
Autodetect
Una propiedad o argumento especificado siempre tiene prioridad sobre un valor “autowired”
© Softtek 2009. 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 2009. 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 2009. 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 2009. Internal.
Agenda
@nnotations
Capa de acceso de datosDAO Support
Utilizando JDBC
Integración con ORMs (Hibernate)
Web MVC Framework
Controllers
Handler Mappings
View Resolvers
Integracion con Struts
© Softtek 2009. Internal.
@nnotations@Required@Autowired@Component, @Service , @Repository & @Controller@Resource@PostConstruct & @PreDestroy
© Softtek 2009. 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íasJdbcDaoSupport
HibernateDaoSupport
JdoDaoSupport
JpaDaoSupport
© Softtek 2009. 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 2009. Internal.
ORM
Facilidad de testing
Excepciones traducidas
Manejo de recursos generales
Manejo de transacciones integrados
© Softtek 2009. Internal.
Hibernate
HibernateTemplateHibernateDaoSupport
© Softtek 2009. Internal.
Web MVC
El archivo de contexto se debe llamar <nombre del servlet>-servlet.xml y encontrarse en el directorio WEB-INF
© Softtek 2009. 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 2009. 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 annotation @Controller se puede utilizar cualquier clase como controller, no hace implementar o extender de nada
© Softtek 2009. Internal.
Handler Mappings
SimpleUrlHandlerMappingBeanNameUrlHandlerMapping
El uso de handlerMappings se puede obviar utilizando annotations. Aunque se pueden combinar ambos estilos no es recomendado.
© Softtek 2009. Internal.
View Resolvers
AbstractCachingViewResolver
XmlViewResolver
ResourceBundleViewResolver
UrlBasedViewResolver
InternalResourceViewResolver
VelocityViewResolver / FreeMarkerViewResolver
© Softtek 2009. 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 2009. 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 2009. Internal.
Referencias
Spring Home Spring - http://www.springsource.org/
Documentación - http://static.springsource.org/spring/docs/2.5.x/reference/index.html
© Softtek 2009. Internal.
Q & A