| Spring Framework | |
| Inicio | Cursos infosintesis.net liberados | Java EE | Fundamentos Spring | VMP - Adaptador contabilidad sin Spring | |
| VideoMarketPlace - Adaptador contabilidad sin Spring | |
| Paso 5: Operativa |
DCD de la aplicación - Solución Inversión de Control e Inyección de Dependencias
Este es el Diagrama de Clases de la aplicación.

Conectar con SAP o COBOL - Inversión de Control e Inyección de Dependencias
En este paso vamos a abordar el problema que plantea el patrón de diseño Bajo Acoplamiento de Craig Larman. Con este patrón en mente conseguimos reducir el número de conversaciones entre objetos para conseguir un acoplamiento débil.
Patrón de diseño Bajo Acoplamiento:
Aunque en muchas ocasiones consigamos un acoplamiento débil, en la mayoría de los casos siguen habiendo muchas dependencias entre objetos. De echo la conversación entre objetos es la esencia de la orientación a objetos.
Los mayores retos que plantea el acoplamiento entre objetos son:
Con los patrones de diseño Inversión de contol (IoC , Inversion of Control) e Inyección de dependencias (DI, Dependency Injection) solventamos en gran medida las dificultades relacionadas con el acoplamiento y la dependencia entre objetos.
En nuestro ejemplo podemos ver que la clase Accounting tiene una dependencia con las clases SAPAdapterAccounting y COBOLAdapterAccounting. En este paso vamos a ver cómo en vez de ser la clase Accounting la responsable de crear los objetos adaptadores u obtener la referencia a estos objetos a través de la clase FactoryServices, va a ser la clase Main la que inyecte o pase la referencia de los objetos adaptadores a través del método setIAdapterAcconting(IAdapterAccounting adapterAccounting).
Cuando hagamos el ejerccio VideoMarketPlace - Adaptador contabilidad con Spring veremos que Spring trabaja con un contenedor desde el cual inyecta o crea las instancias de muchos de los objetos de nuestra aplicación.
Enlaces externos:
Crear el paquete com.infosintesis.accounting.inversionofcontrol
Con tal de poder avanzar en este ejemplo y mantener en el IDE Eclipse todo el código que hemos creado en los Pasos 3 y 4, vamos a crear un nuevo paquete llamado com.infosintesis.accounting.inversionofcontrol.
Nota: Debido a que el nuevo paquete va a mantener todas las clases del paquete com.infosintesis.accounting.factorypattern en vez de crear un nuevo paquete, lo vamos a copiar y pegar. Para recordar cómo se copian los paquetes Java en el IDE Eclipse podemos seguir este vínculo Apendice - Eclipse - Copiar un paquete Java.
Clase Accounting
Ahora modificamos la clase Accounting para conseguir la referencia al objeto SAPAdapterAccounting a través del método setAdapterAccounting(IAdapaterAccountig adapterAccounting). Por tanto vamos a comentar el siguiente código adapterAccounting = FactoryServices.getAccountingAdapter() que le pedía la referencia a la factoría de objetos.
Este es el código modificado de la clase Accounting.
package com.infosintesis.accounting.factorypattern; public class Accounting { public IAdapaterAccountig adpapterAccounting = null; |
Clase Main
Ahora modificamos la clase Main para inyectar o pasar la referencia del objeto SAPAdapterAccounting al objeto Accounting.
package com.infosintesis.accounting.factorypattern; public class Main { public static void main(String[] args) { |
Modificar el fichero properties de parametrización
Vamos a parametrizar la aplicación cambiando el valor de la propiedad accounting_adapter.
Tenemos que cambiar el nombre del paquete tal y como se muestra en el texto del fichero accounting.properties.
#---------------------------------------------- |
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.
