martes, 11 de agosto de 2009

dependency-check en Spring

Uso de dependency-check en Spring

A continuacion se muestra el uso del atributo dependency-check con varios ejemplos

Librearias

commons-logging.jar
spring.jar

Listado de Interfaces

Interface Trabajo

package org.dracof.spring.depcheck;

public interface Trabajo {
}

Interface Domicilio

package org.dracof.spring.depcheck;

public interface Domicilio {
}

Interface Persona

package org.dracof.spring.depcheck;

import java.util.List;

public interface Persona {
public void setNombre(String nombre);

public void setApellido(String apellido);

public void setEdad(int edad);

public void setEstatura(float estatura);

public void setDomicilio(Domicilio domcilio);

public void setTrabajosList(List<Trabajo> trabajos);

public void setNombreAmigos (String[] amigos);
}

Implementaciones

Clase TrabajoImpl implementacion de Trabajo

package org.dracof.spring.depcheck.impl;

import org.dracof.spring.depcheck.Trabajo;

public class TrabajoImpl implements Trabajo {
//metodos e implementacion de trabajo
}

Clase DomicilioImpl implementacion de Domicilio

package org.dracof.spring.depcheck.impl;

import org.dracof.spring.depcheck.Domicilio;

public class DomicilioImpl implements Domicilio{
//metodos e implementacion de Domicilio
}

Clase PersonaImpl implementacion Persona

package org.dracof.spring.depcheck.impl;

import java.util.List;

import org.dracof.spring.depcheck.Domicilio;
import org.dracof.spring.depcheck.Persona;
import org.dracof.spring.depcheck.Trabajo;

public class PersonaImpl implements Persona {

private String nombre;
private String apellido;
private int edad;
private float estatura;
private Domicilio domicilio;
private List<Trabajo> trabajos;
private String[] amigos;

public void setApellido(String apellido) {
this.apellido = apellido;
}

public void setEdad(int edad) {
this.edad = edad;
}

public void setEstatura(float estatura) {
this.estatura = estatura;
}

public void setNombre(String nombre) {
this.nombre = nombre;
}

public void setDomicilio(Domicilio domcilio) {
this.domicilio = domcilio;
}

public void setTrabajosList(List<Trabajo> trabajos) {
this.trabajos = trabajos;
}

public void setNombreAmigos(String[] amigos) {
this.amigos = amigos;
}

public String toString() {
StringBuilder s = new StringBuilder();
s.append("Nombre: " + nombre);
s.append("; Apellido: "+ apellido);
s.append("; Edad: " + edad);
s.append("; Estatura: " + estatura);
s.append("; Amigos: ");
for(String amigo:amigos) {
s.append(amigo+",");
}
return s.toString();
}
}

Application Context (applicationContext.xml)

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">

<beans>
<bean id="persona1" class="org.dracof.spring.depcheck.impl.PersonaImpl" dependency-check="none"/>

<bean id="persona3" class="org.dracof.spring.depcheck.impl.PersonaImpl" dependency-check="simple">
<property name="nombre" value="Dracof"/>
<property name="apellido" value="ApellidoDracof"/>
<property name="edad" value="28"/>
<property name="estatura" value="1.70"/>
<property name="nombreAmigos" value="Juanito, Pepito, Dracofito"/>
</bean>

<bean id="persona4" class="org.dracof.spring.depcheck.impl.PersonaImpl" dependency-check="objects">
<property name="domicilio">
<bean class="org.dracof.spring.depcheck.impl.DomicilioImpl"/>
</property>
<property name="trabajosList">
<list>
<bean class="org.dracof.spring.depcheck.impl.TrabajoImpl"/>
<bean class="org.dracof.spring.depcheck.impl.TrabajoImpl"/>
</list>
</property>
</bean>

<bean id="persona5" class="org.dracof.spring.depcheck.impl.PersonaImpl" dependency-check="all">
<property name="nombre" value="Dracof"/>
<property name="apellido" value="ApellidoDracof"/>
<property name="edad" value="28"/>
<property name="estatura" value="1.70"/>
<property name="domicilio">
<bean class="org.dracof.spring.depcheck.impl.DomicilioImpl"/>
</property>
<property name="trabajosList">
<list>
<bean class="org.dracof.spring.depcheck.impl.TrabajoImpl"/>
<bean class="org.dracof.spring.depcheck.impl.TrabajoImpl"/>
</list>
</property>
<property name="nombreAmigos" value="Juanito, Pepito, Dracofito"/>
</bean>

</beans>

Como se muestra el atributo dependency-check acepta none, simple, objects y all, siendo por default none.

Por ejemplo si se borra el setter nombreAmigos de persona5 que tiene dependency-check="all", Spring lanza

Exception in thread "main" org.springframework.beans.factory.UnsatisfiedDependencyException:
Error creating bean with name 'persona5' defined in class path resource [applicationContext.xml]:
Unsatisfied dependency expressed through bean property 'nombreAmigos': Set this property value or disable dependency checking for this bean.

Referencia:
Checking for dependencies

Descargar Proyectito
DependencyCheck.zip

Suerte.

No hay comentarios:

Publicar un comentario