JavaDabbaDoo.org -Tu comunidad Java parlante Spring Framework
Inicio | Cursos infosintesis.net liberados | Java EE | Fundamentos Spring | VMP - Adaptador contabilidad con Spring
VideoMarketPlace - Adaptador contabilidad con Spring
Paso 3: Operativa

Diagrama de Clases de Diseño de la aplicación - Solución con Spring y anotaciones

Primero de todo vamos a crear la aplicación VideoMarketPlace con una solución tradicional teniendo en cuenta que de momento sólo utilizaremos el adaptador de la contabilidad de SAP.

Este es el Diagrama de Clases de la aplicación

Diagra de Clases de Diseño - Viedeo Market Place - Solución con Spring

Conectar con el módulo finanaciero de SAP - Solución con Spring y anotaciones

Para conectar con el módulo financiero de SAP vamos a crear las siguientes clases e interfaces:


Crear dos nuevos paquetes

Con tal de poder avanzar en este ejemplo y mantener en el IDE Eclipse todo el código que hemos creado en los Pasos 1 y 2, vamos a crear dos nuevos paquetes llamados com.infosintesis.accounting.annotations.beans y com.infosintesis.accounting.annotations.spring.

Nota: Debido a que los dos nuevos paquetes van a mantener todas las clases de los paquetes com.infosintesis.accounting.beans y com.infosintesis.accounting.spring en vez de crear nuevos paquetes, lo vamos a copiar y pegar tal y como hicimos en Apendice - Eclipse - Copiar un paquete Java.


Interfaz IAdapterAccounting y clases SAPAdapterAccounting, COBOLAdapterAccounting y ApterAccounting

Para añadir la anotación @Service a la clase SAPAdapterAccounting, situamos el cursor encima de la declaración de la clase y escribimos la combinación de teclas Ctrl + espacio. En el desplegable seleccionamos @Service - org.springframework.stereotype

aaaa

Este es el aspecto de la clase SAPAdapterAccounting después de añadirle la anotación

package com.infosintesis.accounting.annotations.beans;

import org.springframework.stereotype.Service;

@Service
public class
SAPAdapterAccounting implements IAdapaterAccountig{

  
@Override
  
public void recordIncome(Double amount) {
    System.out.println("Conversation with the SAP financial module: " + amount);
  }

}

Vamos a realizar la misma acción para la clase COBOLAdapterAccounting

package com.infosintesis.accounting.annotations.beans;

import org.springframework.stereotype.Service;

@Service
public class
COBOLAdapterAccounting implements IAdapaterAccountig{

  
@Override
 
 public void recordIncome(Double amount) {
    System.out.println("Conversation with the COBOL financial module: " + amount);
  }

}

Ahora le toca el turno a la clase Accounting

package com.infosintesis.accounting.annotations.beans;

import org.springframework.stereotype.Service;

@Service
public class Accounting {

public IAdapaterAccountig adpapterAccounting = null;

  public void recordIncome(Double amount) {
    adpapterAccounting.recordIncome(amount);
  }

  public void setAdapterAccounting(IAdapaterAccountig adapterAccounting) {
   this.adpapterAccounting = adapterAccounting;
  }

}

Spring utiliza anotaciones a partir de la versión 2.5

Estos son los cambios que tenemos que realizar para trabajar con anotaciones y crear una dependencia con la Clase SAPAdapterAccounting,

package com.infosintesis.accounting.annotations.beans;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.
Service;

@Service("idAccounting")
public class Accounting {

  @Autowired
  public
SAPAdapaterAccountig adpapterAccounting = null;

  public void recordIncome(Double amount) {
    adpapterAccounting.recordIncome(amount);
  }

  
// public void setAdapterAccounting(SAPAdapaterAccountig adapterAccounting) {
  //  this.adpapterAccounting = adapterAccounting;
  // }

}


Modificar el documento XML de declaración de los beans de Spring

Vamos a cambiar todo el contenido del fichero vmpaccountingspring.xml que se encuentra en el paquete com.infosintesis.annotations.spring para poder trabajar con anotaciones

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   xmlns:p="http://www.springframework.org/schema/p"
  xmlns:aop="http://www.springframework.org/schema/aop"   xmlns:context="http://www.springframework.org/schema/context"
  xmlns:jee="http://www.springframework.org/schema/jee"   xmlns:tx="http://www.springframework.org/schema/tx"
  xmlns:task="http://www.springframework.org/schema/task"
  xsi:schemaLocation="http://www.springframework.org/schema/aop     http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
    http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context-3.0.xsd
    http://www.springframework.org/schema/jee
    http://www.springframework.org/schema/jee/spring-jee-3.0.xsd
    http://www.springframework.org/schema/task
    http://www.springframework.org/schema/task/spring-task-3.0.xsd">

  <context:component-scan
    base-package="
com.infosintesis.accounting.annotations.beans" />

  <task:annotation-driven executor="myExecutor" scheduler="myScheduler"/>

  <task:executor id="myExecutor" pool-size="5"/>

  <task:scheduler id="myScheduler" pool-size="10"/>

</beans>


Clase Main

Ahora vamos a crear una clase que arrancará la aplicación de escritorio. Esta clase se alojará en el paquete com.infosintesis.accounting.annotations.spring. En una aplicación Java Web podría ser un servlet realizando funciones de fachada y controlador.

Nota: La clase en cuestión se va a llamar Main. Para recordar cómo se crea una clase que contiene el método main() podemos seguir este vínculo Apendice - Eclipse - Crear una nueva clase Java que contiene el método main

Como podemos observar desde el método main(...) creamos una instancia de la clase Accounting y seguidamente invocamos al método recordIncome(...) pasándole como argumento el valor 6.7.

package com.infosintesis.accounting.annotations.spring;


import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.infosintesis.accounting.annotations.beans.Accounting;

public class Main {

  public static void main(String[] args) {
    ApplicationContext factory = new ClassPathXmlApplicationContext(
             "com/infosintesis/accounting
/annotations/spring/vmpaccountingspring.xml");
    Accounting accounting = (Accounting) factory.getBean("idAccounting");
    accounting.recordIncome(6.7);
  }
}

Ejecutar la aplicación

Nota: Para ejecutar la aplicación tenemos que seguir este vínculo Apendice - Eclipse - Ejecutar una aplicación de escritorio

En la pestaña Console podemos ver el resultado de la ejecución

Ejecutar aplicación escritorio - Solución Spring con anotaciones

Página anterior
Isidro Martínez, Cristian Rodríguez
Oriol Soler, Ignasi Pérez
Infosintesis Solutions Group

Marzo 2011
JavaDabbaDoo.org
Tu comunidad Java parlante. Cursos abiertos, tutoriales y mucho mucho más ...