En la parte 1 vimos como usar Spring siguiendo unos pasos lógicos.
Una de esos pasos era el número 3 donde definiamos nuestros objetos(beans) y luego cargabamos esas definiciones en el contenedor.
Esto lo hicimos con xml. Ahora veamos como hacer lo mismo sin usar xml, solo registrando nuestros objetos.
Como ya vimos si usas Maven la unica dependencia a incluir en el pom.xml es spring-beans ya que por transitividad se
trae spring-core y commons-logging.
Sis los haces manualmente se necesita agregar al proyecto los siguientes jars:
spring-core-4.0.5.RELEASE.jar
spring-beans-4.0.5.RELEASE.jar
commons-logging-1.1.3.jar
Moficando el paso 3
Aquí ya no necesitamos el xml y también tenemos que modificar el codigo Java. Tenemos que crear las mismas definiciones del
xml pero con codigo Java. Veamos como nos queda este paso 3:
//Creamos dos definiciones de beans//Definicion para DotMatrixPrinterGenericBeanDefinitiondotMatrixPrinterDef=newGenericBeanDefinition();dotMatrixPrinterDef.setBeanClass(DotMatrixprinter.class);//Definicion para OfficeGenericBeanDefinitionofficeDef=newGenericBeanDefinition();officeDef.setBeanClass(Office.class);//Recordemos que Office recibe por constructor una referencia de Printer//asi que definimos esta relacion con ConstructorArgumentValuesConstructorArgumentValuesofficeConstructorValues=newConstructorArgumentValues();officeConstructorValues.addGenericArgumentValue(dotMatrixPrinterDef);//Establecemos dicha relacion con la definición de OfficeofficeDef.setConstructorArgumentValues(officeConstructorValues);//Registramos nuestras deficiones en el contenedorcontainer.registerBeanDefinition("dotMatrixPrinter",dotMatrixPrinterDef);container.registerBeanDefinition("office",officeDef);
Tambien podemos definir nuestras dependencias a través de atributos o setters de la clase. Para esto usamos el tag <property>
dentro de <bean>. Este permite las siguientes formas:
En la parte inicial vimos como usar la clase ConstructorArgumentValues para definir nuestras dependencias a través del
constructor. También podemos definir dependencias por setter con la clase MutablePropertyValues. Imagenemos que nuestra
clase Office no recibe un Printer a través del constructor si no de un setter setPrinter(), nuestro código seria algo
asi: