Introduccion Spring Framework v1.0

download Introduccion Spring Framework v1.0

of 70

Transcript of Introduccion Spring Framework v1.0

  • Buenos Aires, ArgentinaOctubre de 2007

    Universidad de Palermo Facultad de Ingeniera > IT Lab > AI Group

    IntroducciIntroduccin a n a SpringSpring FrameworkFramework

    MartMartn Agn [email protected]

    versin 1.0

  • Contenidos parte I: Qu es Spring? Introduccin Arquitectura Caractersticas clave Ejemplos: IOC, AOP, Hibernate, Web services, Seguridad

    Agenda

  • Contenidos parte II: Integracin con OpenSymphony Quartz Integracin con JavaServer Faces

    Agenda

  • Agenda

    Un archivo spring-training.rar acompaa al presente y contiene paquetes con el cdigo fuente de los ejemplos presentados a continuacin. Para ms informacin consultar el archivo README.txt ubicado dentro del rar.

  • Spring Framework:

    Parte I

  • Un framework contenedor liviano basado en la tcnica Inversin de Control (IoC) y una implementacin de desarrollo segn el paradigma de Orientacin a Aspectos (AOP)

    Qu es Spring?

  • Framework: porque define la forma de desarrollar aplicaciones J2EE, dando soporte y simplificando complejidad propia del software corporativo.

    Inversin de Control (IoC): promueve el bajo acoplamiento a partir de la inyeccin de dependencias (DI) entre los objetos (relaciones).

    Orientacin a Aspectos (AOP): presenta una estructura simplificada para el desarrollo y utilizacin de aspectos (mdulos multiple object crosscutting).

    Spring Framework: introduccin

  • Spring Framework: arquitectura

  • provee un contexto apropiado para el desarrollo de aplicaciones web e integracin con otros frameworks(Struts, JSF, Tapestry, etc).

    Web

    acceso e interaccin con servicios enterprise.JEE

    integracin con Hibernate, JDO, etc.ORM

    accesos JDBC con manejo de transacciones (desde el mdulo AOP).

    DAO

    Spring Framework: arquitectura (cont.)

  • Spring Framework: caractersticas clave POJO: (Plain Old Java Object) revalora la simplicidad de las clases

    Java aportando manejo de transacciones de forma no intrusiva.

    XML: configuracin basada en archivos XML.

    Seguridad: como un requerimiento no funcional implementado como un aspecto (AOP) a travs del framework Acegi.

    Remoting: RMI simplificado, acceso y publicacin de web services.

    Testing: provee un package de testing especfico para componentes del framework e integrado con JUnit.

  • 1. IoC: desacoplando clases cableando (wiring) beans.

    2. AOP: interceptando mtodos con aspectos (aspects).

    3. Hibernate: gestin integrada de transacciones y recursos.

    4. Web services: configuracin y consumo de un web service.

    5. Seguridad: control y gestin de seguridad con Acegi.

    Spring Framework: ejemplos

  • Spring Framework: IoC - DI1. IoC: desacoplando clases cableando (wiring) beans.

    2. AOP: interceptando mtodos con aspectos (aspects).

    3. Hibernate: gestin integrada de transacciones y recursos.

    4. Web services: configuracin y consumo de un web service.

    5. Seguridad: control y gestin de seguridad con Acegi.

  • Spring Framework: IoC - DI Dependencia tpica entre objetos

    KnighOfTheRoundtable

    new()

    HolyGrailQuest

    new HolyGrailQuest()

    RescueDamselQuest

    new RescueDamselQuest()

    x alto acoplamientox difcil testeo unitario

  • Spring Framework: IoC - DI Usando Dependency Injection (DI)/ Inversion of Control (IoC)

    HolyGrailQuest

    new()

    RescueDamselQuest

    set Quest()

    KnighOfTheRoundtable

    new()

    set Quest()

    new()

    colaboracin entre objetos centralizada relacin entre objetos delegada

  • Spring Framework: IoC - DI Cableado (wiring) de objetos

    define el bean quest

    define el bean knight

    set del bean quest al bean knight(inyeccin de dependencia)

    set del nombre de knight desde el constructor

  • 1. IoC: desacoplando clases cableando (wiring) beans.

    2. AOP: interceptando mtodos con aspectos (aspects).

    3. Hibernate: gestin integrada de transacciones y recursos.

    4. Web services: configuracin y consumo de un web Service.

    5. Seguridad: control y gestin de seguridad con Acegi.

    Spring Framework: AOP

  • Spring Framework: AOP Tpicas invocaciones a funcionalidades system-wide

    LoggingModule

    SecurityModule

    TransactionManager

    Student Service

    Course Service

    Instructor Service

    Billing Service

    Content Service

  • Spring Framework: AOP Usando AOP

    Logging Module

    Security Module

    Tra

    nsactio

    nM

    an

    age

    r

    Student Service

    Course Service

    Billing Service Content Service

    Instructor Service

  • Spring Framework: AOP Dependencia tpica entre objetos

    Knight

    new()

    Minstrel

    compose ()

    Minstel: trovador/poeta(un logger)

    x baja reusabilidadx duplicacin de cdigo

  • Spring Framework: AOP Objeto Minstrel Aspect-Oriented

    Minstrel

    Knight

    separacin de funcionalidad por mdulos servicios aplicados de forma no intrusiva

  • Spring Framework: AOP Minstrel Aspect-Oriented

    mtodo a ejecutar antes de la invocacin

    logger de la clase a interceptar

  • Spring Framework: AOP Weaving (aplicar un advice) MinistrelAdvice a Knight

    define el bean minstrel

    intercepta invocaciones al objeto knight

    minstrel primero ejecuta su mtodoluego knightTargetejecuta su mtodo

  • 1. IoC: desacoplando clases cableando (wiring) beans.

    2. AOP: interceptando mtodos con aspectos (aspects).

    3. Hibernate: gestin integrada de transacciones y recursos.

    4. Web services: configuracin y consumo de un web service.

    5. Seguridad: control y gestin de seguridad con Acegi.

    Spring Framework: Hibernate

  • Spring Framework: Hibernate gestin y definicin de recursos centralizada desde Spring.

    conversin de excepciones propietarias.

    acceso a mtodos DAO desde HibernateTemplate.

    demarcado programtico de transacciones.

    demarcado declarativo de transacciones.

  • Spring Framework: Hibernate gestin y definicin de recursos centralizada desde Spring (wiring):

  • Spring Framework: Hibernate

    DataAccessException

    DataAccessResourceFailureException

    CleanupFailureDataAccessException

    UncategorizedDataAccessException

    DataIntegrityViolationException

    InvalidDataAccessApiUsageException

    InvalidDataAccessResourceUsageException

    DataRetrievalFailureException

    ObjectRetrievalFailureException

    OptimisticLockingFailureException

    ObjectOptimisticLockingFailureException

    DeadLockLoserDataAccessException

    TypemismatchDataAccessExceptionIncorrectUpdateSemanticsDataException

    conversin de excepciones propietarias a:

  • Spring Framework: Hibernate acceso a mtodos DAO desde HibernateTemplate:

    Es la versin en Spring de la interface Session de Hibernate.

    Garantiza que las intantancias de Session sean abiertas, cerradas correctamente y participen automticamente en transacciones.

    Instancias de HibernateTemplate son thread-safe y reusables.

    Convierte las checked HibernateExceptions a uncheckedDataAccessExceptions (excepciones traducidas por Spring).

  • Spring Framework: Hibernate acceso a mtodos DAO desde HibernateTemplate:

    set SessionFactory

    uso de mtodo find()

  • Spring Framework: Hibernate demarcado programtico de transacciones

    Requiere una instancia de PlatformTransactionManager.

    set de myTxManagery productDao al servicio

  • Spring Framework: Hibernate demarcado programtico de transacciones

    set de myTxManagery productDao

    en contexto transaccional

  • Spring Framework: Hibernate demarcado declarativo de transacciones

    Permite reemplazar demarcaciones explcitas en el cdigo Java interceptando mtodos con AOP.

    Evita repeticiones de cdigo transaccional en servicios de negocio.

    Niveles de transaccionabilidad (ej: comportamiento de la propagacin, niveles de aislamiento) pueden ser configurados desde un archivoexterno sin afectar la implementacin.

  • Spring Framework: Hibernate demarcado declarativo de transacciones

    mtodo a interceptar

    configura niveles de transaccionabilidad

  • Spring Framework: Hibernate demarcado declarativo de transacciones

    interceptor de transacciones

  • Spring Framework: Hibernate demarcado declarativo de transacciones

    no hay cdigo transaccional

  • 1. IoC: desacoplando clases cableando (wiring) beans.

    2. AOP: interceptando mtodos con aspectos (aspects).

    3. Hibernate: gestin integrada de transacciones y recursos.

    4. Web services: configuracin y consumo de un web service.

    5. Seguridad: control y gestin de seguridad con Acegi.

    Spring Framework: web services

  • Spring Framework: web services Spring expone web services con JAX-RPC (Java APIs for XML-based

    remote procedure call). Accede a web services sin acoplar cdigo fuente, es decir configurados

    por wiring (xml). En combinacin con Apache Axis, es posible generar automticamente

    cdigo java (WSDL2Java) a partir de un archivo WSDL (Web ServiceDescription Language).

    Configurando una tarea Apache Ant con parmetros especficos, Axispuede generar automticamente el cdigo Java para consumir un webservice desde Spring.

  • Spring Framework: web services configuracin y consumo de un web service

    direccin al documento wsdldefine la interface que el cliente usa para acceder al servicio

    valores utilizados por nameService para construir una QName

    Spring permite utilizar una ServiceFactoryexterna, para este caso de Apache Axis

  • Interface que el cliente define para utilizar el web service

    Uso del Web Service desde un contexto Spring

    Spring Framework: web services configuracin y consumo de un web service

  • 1. IoC: desacoplando clases cableando (wiring) beans.

    2. AOP: interceptando mtodos con aspectos (aspects).

    3. Hibernate: gestin integrada de transacciones y recursos.

    4. Web Services: configuracin y consumo de un Web Service.

    5. Seguridad: control y gestin de seguridad con Acegi.

    Spring Framework: seguridad

  • Spring Framework: seguridadAcegi Security System:

    seguridad declarativa para aplicaciones basadas en Spring Framework.

    sub proyecto de Spring Framework.

    provee una coleccin de beans configurables en el contexto Spring.

    basado en DI-IoC (dependency injection) y AOP.

    autentifica y autoriza accesos a aplicaciones web con filtros.

  • Spring Framework: seguridadAcegi Security System: Elementos fundamentales de Acegi Framework

    AuthenticationManager

    Security Interceptor

    Access DecisionManager

    Run-As Manager

    Determina identidad del usuario por principal(username) y credentials (password).

    Administra accesos a recursos restringidos. Permite acceder segn la informacin de autenticacin y los atributos asociados al recurso.

    Autoriza acceso a subrecursos segn niveles determinados por autenticacin y credenciales.

    autorizacin re-autenticacinautenticacin

  • Spring Framework: seguridadAcegi Security System: Elementos fundamentales de Acegi Framework

    AuthenticationManager

    Security Interceptor

    Access DecisionManager

    Run-As Manager

    Determina identidad del usuario por principal(username) y credentials (password).

    Administra accesos a recursos restringidos. Permite acceder segn la informacin de autenticacin y los atributos asociados al recurso.

    Autoriza acceso a subrecursos segn niveles determinados por autenticacin y credenciales.

    autorizacin re-autenticacinautenticacin

  • Spring Framework: seguridadAuthentication

    ManagerProviderManager es la implementacin de AutenticationManagerque delega la responsabilidad de autenticar en uno o ms proveedores de autenticacin.

    PasswordDaoAuthentication

    Provider

    Remote Authentication

    ProviderJaas Authentication

    ProviderCas Authentication

    Provider

    Provider Manager

    Obtiene informacin del usuario de la base de datos, incluyendo username y password.

    Dao AuthenticationProvider

    LDAP

    Single-Sign-On con YaleCAS (Central Authentication Service)

  • Spring Framework: seguridadAuthentication

    ManagerPasswordDaoAuthenticationProvider es la implementacin especfica para autenticar contra un servidor LDAP. Delega en LdapPasswordAuthenticationDao la verificacin de credenciales.

  • Spring Framework: seguridadAuthentication

    ManagerEl bean de LdapPasswordAuthenticationDao es cableado a un bean PasswordDaoAuthenticationProvider.

    Wiring de PasswordDaoAuthenticationProvider

    Interface que debe implementar

  • Spring Framework: seguridadAcegi Security System: Elementos fundamentales de Acegi Framework

    AuthenticationManager

    Security Interceptor

    Access DecisionManager

    Run-As Manager

    Determina identidad del usuario por principal(username) y credentials (password).

    Administra accesos a recursos restringidos. Permite acceder segn la informacin de autenticacin y los atributos asociados al recurso.

    Autoriza acceso a subrecursos segn niveles determinados por autenticacin y credenciales.

    autorizacin re-autenticacinautenticacin

  • Spring Framework: seguridad

    Un conjunto de objetos votan y deciden si un usuario est autorizado a acceder a un recurso, las decisiones pueden ser:

    El objeto manager evala los votos y determina si las credenciales son suficientes para acceder, segn el siguiente criterio:

    El votante es indiferente.ACCESS_ABSTAIN

    El votante desea denegar el acceso al recurso restringido.ACCESS_DENIEDEl votante desea otorgar acceso al recurso restringido.ACCESS_GRANTED

    Access DecisionManager

    Es el responsable de decidir si el usuario autenticado por AuthenticationManager tiene los privilegios para acceder a un recurso restringido.

    Permite acceso slo si no hubo votantes que denieguen acceso.UnanimousBasedPermite acceso si todos los votantes otorgan acceso.ConsensusBasedPermite acceso si al menos un votante otorga acceso.AffirmativeBasedCmo decide:Access Decision Manager:

  • Spring Framework: seguridadAcegi Security System: Elementos fundamentales de Acegi Framework

    AuthenticationManager

    Security Interceptor

    Access DecisionManager

    Run-As Manager

    Determina identidad del usuario por principal(username) y credentials (password).

    Administra accesos a recursos restringidos. Permite acceder segn la informacin de autenticacin y los atributos asociados al recurso.

    Autoriza acceso a subrecursos segn niveles determinados por autenticacin y credenciales.

    autorizacin re-autenticacinautenticacin

  • Spring Framework: seguridad

    AbstractSecurityInterceptor puede reemplazar de forma temporal el objeto de autenticacin siempre que haya sido procesado exitosamente por el AuthenticationManager y por AccessDecisionManager.

    Permite a un usuario hacer llamadas a objetos que requieran diferentes credenciales de autenticacin y autorizacin.

    Esta caracterstica es particularmente til para llamar Web Servicesremotos (segn documentacin de referencia del framework).

    Run-As Manager

    Autoriza acceso a subrecursos segn niveles determinados por autenticacin y credenciales.

    objeto Authenticationexistente

    objeto Authenticationreemplazante

  • Spring Framework: seguridadAcegi Security System:

    seguridad declarativa para aplicaciones basadas en Spring Framework.

    sub proyecto de Spring Framework.

    provee una coleccin de beans configurables en el contexto Spring.

    basado en DI-IoC (dependency injection) y AOP.

    autentifica y autoriza accesos a aplicaciones web con filtros.

  • Spring Framework: seguridad autentifica y autoriza accesos a aplicaciones web con filtros:

    Filtros interceptan request entrantes y aplican procesos de seguridad antes de ser evaluados por la aplicacin.

    Acegi provee un conjunto de filtros especficos a diferentes etapas del proceso request.

    Interceptan las solicitudes y reencaminan el flujo de la aplicacin a los correspondientes Authentication y Access Decision Managers.

  • Spring Framework: seguridad autentifica y autoriza accesos a aplicaciones web con filtros:

    Channel-Processing Filter

    Authentication-ProcessingFilter

    Integration Filter

    Security Enforcement Filter

    Recurso Web Seguro

    Request

    Garantiza que un request sea transmitido por un canal seguro (ej: https)

    Acepta request de autenticacin y reencamina las solicitudes al Authentication Manager.

    Almacena y gestiona la informacin de autenticacin del usuario.

    Garantiza que el usuario ha sido autenticado y cumple con la autorizacin para acceder a un recurso web restringido.

  • Spring Framework:

    Fin de Parte I

  • Agenda

    Contenidos parte II: Integracin con OpenSymphony Quartz Integracin con JavaServer Faces

  • Spring Framework:

    Parte II

  • 6. Quartz: scheduling jobs con Quartz desde Spring.

    7. JSF: integracin con JavaServer Faces.

    Spring Framework: Parte II

  • 6. Quartz: scheduling jobs con Quartz desde Spring.

    7. JSF: integracin con JavaServer Faces.

    Spring Framework: scheduling

  • Spring Framework: scheduling

    idgrupoid_jobDetailid_grupo_jobDetailcron expressions

    org.quartz.Joborg.quartz.Job

    MyJob

    org.quartz.Joborg.quartz.Joborg.quartz.Joborg.quartz.Job

    org.quartz.JobDetail

    org.quartz.Scheduler org.quartz.Trigger

    idgrupo

    0 0 12 * * ? Fire at 12pm (noon) every day

    addJob()

    scheduleJob()

    org.quartz.JobDetail

    org.quartz.Job

    org.quartz.JobDetail

    configuracin de trabajos con la API de OpenSymphony Quartz

    Programar trabajos (jobs) de ejecucin automtica ante eventos o por calendario:

  • Spring Framework: scheduling Programar jobs cableando (wiring) de clases que son parte de Spring:

    configuracin de trabajos Quartz con Spring

  • Spring Framework: scheduling Ejemplos de expresiones cron utilizadas por Quartz para programar jobs:

    Fire every November 11th at 11:11am. 0 11 11 11 11 ?

    Fire at 12pm (noon) every 5 days every month, starting on the first day of the month. 0 0 12 1/5 * ?

    Fire at 10:15am on the third Friday of every month 0 15 10 ? * 6#3

    Fire at 10:15am on every last friday of every month during the years 2002, 2003, 2004 and 2005 0 15 10 ? * 6L 2002-2005

    Fire at 10:15am on the last Friday of every month 0 15 10 ? * 6L

    Fire at 10:15am on the last Friday of every month 0 15 10 ? * 6L

    Fire at 10:15am on the last day of every month 0 15 10 L * ?

    Fire at 10:15am on the 15th day of every month 0 15 10 15 * ?

    Fire at 10:15am every Monday, Tuesday, Wednesday, Thursday and Friday 0 15 10 ? * MON-FRI

    Fire at 2:10pm and at 2:44pm every Wednesday in the month of March. 0 10,44 14 ? 3 WED

    Fire every minute starting at 2pm and ending at 2:05pm, every day 0 0-5 14 * * ?

    Fire every 5 minutes starting at 2pm and ending at 2:55pm, AND fire every 5 minutes starting at 6pm and ending at 6:55pm, every day

    0 0/5 14,18 * * ?

    Fire every 5 minutes starting at 2pm and ending at 2:55pm, every day 0 0/5 14 * * ?

    Fire every minute starting at 2pm and ending at 2:59pm, every day 0 * 14 * * ?

    Fire at 10:15am every day during the year 2005 0 15 10 * * ? 2005

    Fire at 10:15am every day 0 15 10 * * ? *

    Fire at 10:15am every day 0 15 10 * * ?

    Fire at 10:15am every day 0 15 10 ? * *

    Fire at 12pm (noon) every day 0 0 12 * * ?

    Meaning Expression

  • 6. Quartz: scheduling jobs con Quartz desde Spring.

    7. JSF: integracin con JavaServer Faces.

    Spring Framework: JSF

  • Spring Framework: JSF

    Inyeccin de beans Spring en Managed beans de JSF: separacin lgica entre capa de servicios - UI. soporte integrado con Spring desde DelegatingVariableResolver.

    JavaServer Faces (JSF): components based framework. event-driven components. multiplataforma, multidispositivo.parte de J2EE 1.5

  • Spring Framework: JSF configuracin de archivo faces-config.xml de JSF:

  • WebApplicationContext:

    utiliza el WebApplicationContextVariableResolver.

    expone WebApplicationContext bajo variable webApplicationContext.

    permite acceder a la BeanFactory de Spring y otros servicios directamente desde los Managed Beans.

    Spring Framework: JSF

  • Spring Framework:

    Fin de Parte II

  • Spring Framework: autores

    Spring FrameworkRod Johnson, Juergen Hoeller, Alef Arendsen, Colin Sampaleanu, et al.

    Acegi Security for SpringBen Alex

    HibernateGavin King et al.

    OpenSymphony QuartzJames House, Jasper Rosenberg, Aaron Craven.

  • Spring Framework: referencias

    Spring in Action, Walls-BreidenbachSpring Framework referenceAcegi referenceQuartz documentationData Access with the Spring Framework, Juergen HoellerApache Axis user guidePOJOs in Action, RichardsonSpring and JavaServerFaces Technology: Synergy or Superfluous?

  • Spring Framework: ms informacin

    Actualizacin Spring 2.0 http://www.infoq.com/articles/spring-2-intro

    Simplifying Enterprise Applications with Spring 2.0 and AspectJhttp://www.infoq.com/articles/Simplifying-Enterprise-Apps

    Building JavaServer Faces Applications with Spring and Hibernatehttp://developers.sun.com/learning/javaoneonline/2007/pdf/TS-7082.pdf

  • Spring Framework: propiedad intelectual

    Todas las marcas mencionadas son propiedad exclusiva de sus dueos.

  • Spring Framework: fin de presentacin

    www.palermo.edu