Mostrando entradas con la etiqueta Spring. Mostrar todas las entradas
Mostrando entradas con la etiqueta Spring. Mostrar todas las entradas

jueves, 4 de noviembre de 2010

PRIMER PROYECTO SPRING: springbasico

New Maven Project --> Create a simple Project
  • Group Id: id de la empresa. Por ejemplo es.cea
  • Artifact Id: El modulo que vamos a desarrollar. Por ejemplo springbasico.
  • Packing: jar.

CLASES JAVA: Se introducen en src/main/java
PRUEBAS: Se introducen en src/test/java

En SPRING trabajamos con Interfaces e implementaciones, pues esto da flexibilidad a la hora de trabajar con distintas BD por ejemplo.

El problema trata de realizar lo siguiente:

Se sigue el siguiente proceso:
  • Se decide hacer una prueba:

  • Clase MiBean:

  • applicationContext.xml:

Que significa las dependencias entre los distintos beans, o mejor dicho que hace SPRING?(VER applicationContext.xml)

MiDependencia miSuperDependenciaBean=new MiDependencia();
MiBean miSuperBean=new MiBean();
miSuperBean.setMiDependencia(miSuperDependenciaBean); //Se inyecta la dependencia

INICIO SPRING

¿Que es SPRING?

Un framework contenedor liviano basado en la tecnica INVERSION DE CONTROL (IoC) y una implementacion de desarrollo segun el paradigma de ORIENTACION A ASPECTOS (AOP).


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

*Inversión de Control (IoC): promueve el bajo acoplamiento a partir de la inyección de dependencias (DI) entre los objetos (relaciones).

*Orientación a Aspectos (AOP): presenta una estructura simplificada para el desarrollo y utilización de aspectos.


ARQUITECTURA


*DAO: accesos JDBC con manejo de transacciones (desde el módulo AOP).

*ORM: integración con Hibernate, JDO, etc.

*JEE:
acceso e interacción con servicios enterprise.

*WEB:
provee un contexto apropiado para el desarrollo de aplicaciones web e integración con otros frameworks (Struts, JSF, etc).


CARACTERÍSTICAS CLAVE

*POJO:
Plain Old Java Object. Revalora la simplicidad de las clases Java aportando manejo de transacciones de forma no intrusiva.

*XML:
configuración basada en archivos XML.

*SEGURIDAD:
como un requerimiento no funcional implementado como un aspecto (AOP) a través del framework Acegi.

*REMOTING:
RMI simplificado, acceso y publicación de web services.

*TESTING:
provee un package de testing específico para componentes del framework e integrado con JUnit.


Volviendo al diseño MVC donde se comunica el Controlador con el Servicio, Servicio con Dao, etc.. Existen dos formas de comunicación:

-COMPOSICIÓN: Desde el Controlador se crea un Servicio. Servicio s=new Servicio(); Si dos controladores usan el mismo Servicio y dentro del Controlador creamos un servicio tendremos serios problemas (la referencia del servicio será distintas en cada controlador). ESTO NO SE PUEDE.

-AGREGACIÓN:
Desde el controlador: Servicio s;--->¿Quién se encarga de referenciar el servicio? --> SPRING-CONTAINER.

Veamos un controlador:

class Controlador{

Servicio s2;
public void setS2(Servicio s){
s2=s;
}

}

Como implementa SPRING el Servicio:

Controlador c1=new Controlador();
Servicio s2=new Servicio();
c1.setS2(s2);