Archivar en 7 marzo, 2019

02 – Lab – Desarrollar una aplicación desde objetos POJO’s

  1. Introducción
    Los laboratorios del curso Core Spring enseñan Spring en el contexto del dominio de un problema. El dominio proporciona un contexto real para aplicar Spring para desarrollar aplicaciones empresariales útiles. Este documento proporciona una visión general del dominio y las aplicaciones en las que va a trabajar.
  2. Descripción general del dominio
    El dominio se llama Reward dining . La idea detrás es que los clientes pueden ahorrar dinero cada vez que comen en uno de los restaurantes que participan en la red. Por ejemplo, Keith desea ahorrar dinero para la educación de sus hijos. Cada vez que cena en un restaurante participando en la red, se le hará una aportación a su cuenta que va a su hija Annabelle para la Universidad. Vea el visual ilustrando este proceso de negocio abajo:
  3. Aplicaciones de dominio de Reward Dining
    En esta sección siguiente se proporciona una descripción general de las aplicaciones en el dominio de restauración de recompensas en el que se va a trabajar en este curso.
  4. Lla aplicación de recompensas. La aplicación «rewards» recompensa una cuenta para comer en un restaurante que participa en la red de recompensas. Una recompensa adopta la forma de una contribución monetaria a una cuenta que se distribuye entre los beneficiarios de la cuenta. Aquí es cómo se utiliza esta aplicación:
    1. Cuando tienen hambre, los miembros comen en los restaurantes participantes utilizando sus tarjetas de crédito regulares.
    2. Cada dos semanas, se genera un archivo que contiene las transacciones de tarjetas de crédito de los miembros durante ese período. A continuación se muestra una muestra de uno de estos archivos:
    3. Una aplicación DiningBatchProcessor independiente Lee este archivo y envía cada registro de comedor a la aplicación de recompensas para su procesamiento.
  1. interfaz de aplicación pública.El RewardNetwork es los clientes de interfaz central como el uso de DiningBatchProcessor para invocar la aplicación:

Un RewardNetwork recompensa una cuenta para comer al hacer una contribución monetaria a la cuenta que se distribuye entre los beneficiarios de la cuenta. El siguiente diagrama de secuencia muestra la interacción de un cliente con la aplicación ilustrando este proceso:

En este ejemplo, la cuenta con tarjeta de crédito 1234123412341234 es recompensada por una cena de $100,00 en el restaurante 1234567890 que tuvo lugar en 12/29/2010. La recompensa confirmada 9831 adopta la forma de una contribución de cuenta de $8,00 distribuida uniformemente entre los beneficiarios Annabelle y su hermano Corgan.

3.1.2. implementación de la aplicación interna
Internamente, la implementación de RewardNetwork delega en objetos de dominio para llevar a cabo una transacción de rewardAccountFor (comedor). Existen clases para los dos conceptos de dominio central de la aplicación: cuenta y restaurante. Un restaurante es responsable de calcular el beneficio elegible para una cuenta para un comedor. Una cuenta es responsable de distribuir el beneficio entre sus beneficiarios como «contribución «.

Este flujo se muestra a continuación:

Figura 4: objetos que trabajan juntos para llevar a cabo el caso de uso de rewardAccountFor (comedor).

La RewardNetwork le pide al restaurante que calcule cuánto beneficio otorgar, y luego contribuye esa cantidad a la cuenta.

3.1.3. apoyo a RewardNetworkImpl Services
La información de la cuenta y del restaurante se almacena en forma persistente dentro de una base de datos relacional. La implementación de RewardNetwork delega en admitir servicios de acceso a datos denominados «repositorios» para cargar objetos de cuenta y restaurante desde sus representaciones relacionales. Un AccountRepository se utiliza para encontrar una cuenta por su número de tarjeta de crédito. Un RestaurantRepository se utiliza para encontrar un restaurante por su número de comerciante. Un RewardRepository se utiliza para realizar un seguimiento de las transacciones de recompensa confirmadas para fines contables.

La secuencia completa de rewardAccountFor (comedor) que incorpora estos repositorios se muestra a continuación:

  1. esquema de base de datos de restaurantes recompensa
    Las aplicaciones de restauración de recompensas comparten una base de datos con este esquema:

01 – Objetivos de Spring Franework

Proporcionar una infraestructura comprensible para el desarrollo de Aplicaciones Java empresariales.

  • Spring se encarga de la plomería
  • Usted se enfoca en resolver los problemas de dominio

Soporte CORE (1)

  • Configuración de la aplicación
  • Integración Empresarial
  • Pruebas
  • Acceso a Datos

Configuración de la Aplicación

Una aplicación típica consiste de varias partes trabajando juntos para llevar a cabo un caso de uso (working together to carry out a use case)

Ejemplo: Un sistema de transferencia de dinero

Configuración de Soporte de Spring

  • Spring proporciona el soporte para ensamblar un sistema con sus partes
    • Las partes no se deben preocupar por encontrar a las otras
    • Cualquier parte puede se fácilmente intercambiada

Ensamblado del Sistema de Transferencia de Dinero

Las partes son simplemente POJO’s (Plain Old Java Objects)

Intercambio de partes de implementación

Integración empresarial

  • Las aplicaciones empresariales no trabajan aisladas
  • Estas requieren servicios y recursos empresariales
  • Transacciones de base de datos
    • Seguridad
    • Mensajería
    • Acceso Remoto
    • Cache

Integración empresarial con Spring

Spring ayuda a integrar poderosos servicios empresariales en tu aplicación

  • Mientras mantiene el código de su aplicación simple y testeable

Conecta todos los servidores de aplicaciones JavaEE

  • Mientras que es capaz de uso standalone

Testing (Pruebas)

  • Las pruebas automatizadas son esenciales
  • Spring permite las pruebas unitarias
    • Desacopla objetos de su entorno
    • Permitiendo realizar fácilmente pruebas en cada pieza aislada de su aplicación
  • Spring proporciona soporte a pruebas de sistema
    • Ayuda a probar todas las piezas juntas

Habilitar pruebas unitarias

Acceso a datos

La mayorías de las aplicaciones empresariales accesan a datos almacenados en una base de datos relacional

  • Para llevar a cabo (to carry out ) funciones de negocio
  • Para hacer cumplir las reglas de negocios (To enforce bussines rules)

Acceso a datos con Spring

Spring hace que el acceso a datos sea mas fácil y efectvo

  • Maneja los recursos por usted
  • Proporcionar API helpers
  • Soporta la mayoría de tecnologías de acceso a datos
    • JDBC
    • Hibernate
    • JPA ( version 1 y 2)
    • MyBatis (iBatis)
  • Ver mas en : https://spring.io/projects/spring-data

Soporte Spring (2) – Soporte al desarrollo de aplicaciones Web

  • Soporte al desarrollo de aplicaciones Web
  • Integración Struts
  • Integración JSF
  • Spring MVC y Web Flow
    • Manejo de interacciones de usuario
    • Validar entradas de formulario
    • Hacer cumplir las reglas de navegación en el sitio
    • Administrar el estado de las conversaciones
    • Renderizar las respuestas (HTML. XML, etc)
    • Soporte a REST y AJAX

Soporte Spring (3) – Soporte al desarrollo de aplicaciones empresariales

  • Desarrollo de web services
  • Agregar capacidad de administración (adding manageability)
  • Integración de infraestructuras de mensajería (Integrating messaging infraestructure)
  • Protección de los servicios (Securing services) y proporciona control de acceso a los objetos
  • Tareas y calendarización de trabajos
    • Spring batch (no en este curso)