Buenas Practicas De Configuracion De Spring

De Dos Ideas.
Saltar a: navegación, buscar

Aqui hay una recopilacion de buenas practicas a la hora de configurar Spring, las mismas son traducciones de: Twelve Best Practices for Spring XML

Evitar el uso de autowiring

Spring puede hacer autowiring de dependencias haciendo instropeccion de las clases, logrando de esta manera evitar que uno tenga que especificar las propiedades del bean o los argumentos de los constructores. Se puede hacer autowiring de las propiedades de los beans ya sea por nombre de propiedad o por tipo. En el caso de los constructores, solo se permite por tipo. Tambien se puede especificar el modo "autodetect autoriwiring", que deja que Spring elija el mecanismo mas apropiado. Miremos el siguiente código:

<bean id="invasorService"

       class="com.dosideas.spring.InvasorService"
       autowire="byName"/>

Los nombres de las propiedades de la clase InvasorService son usadas para buscar instancias de beans en el contenedor. El uso de Autowiring nos salva de tipear mucho código. De todas formas, nunca deberiamos utilizar Autowiring en una aplicación real porque perjudicamos la legibilidad de nuestro archivo de configuración y la mantenibilidad del mismo. Parece una buena idea hacer que nuestros archivos XML de configuración sean pequeños, pero esto aumenta en gran medida la complejidad de comprensión de la solución.

Spring tambien nos permite mezclar las dos técnicas (Autowiring y no-autowiring), pero con esto solamente lograriamos hacer mucho mas confusa la configuración.

Usar convenciones de nomenclatura

Esta es la misma filosofia que utilizamo con el código Java. Usar una nomenclatura clara, descriptiva y consistente en todo el proyecto es de gran ayuda para que los desarrolladores entiendan la configuración XML. Para el id de los Beans, por ejemplo, se puede seguir la convención de atributos de una clase Java. El Bean ID de una instancia de InvasorDAO podria ser InvasorDAO. En proyectos grandes, se puede agregar el nombre del paquete como prefijo del Bean ID.

Usar formas abreviadas de configuración

Las formas abreviadas son mas faciles de leer, dado que transforma el valor de los elementos hijos en atributos del elemento padre. Por ejemplo:

<bean id="invasorService"

     class="com.dosideas.spring.InvasorService">
      <property name="nombreInvasor">
         <value>Zim</value>
      </property>
      <constructor-arg>
         <ref bean="invasorDAO">
      </constructor-arg>

</bean>

puede ser reescrito de forma abreviada:

<bean id="InvasorService"

     class="com.dosideas.spring.InvasorService">
       <property name="nombreInvasor" value="Zim"/>
       <constructor-arg ref="invasorDAO"/>

</bean>

Este feature esta disponible desde la versión 1.2 de Spring. Vale aclarar que no existe abreviacion para el elemento <ref local="...">.

Esta forma de abreviar nuestra configuración no solo nos evita tipear, tambien deja al archivo XML mucho mas claro.

Utilizar type en vez de index para los argumentos del constructor

Spring permite utilizar indices (que comienzan en cero) para resolver el problema de ambigüedad cuando un constructor tiene mas de un argumento del mismo tipo, o cuando se utiliza el atributo value para asignar el valor. Por ejemplo, en vez de:

<bean id="InvasorService"

       class="com.dosideas.spring.InvazorService">
       <constructor-arg index="0" value="Zim"/>
       <constructor-arg index="1" value="100"/>

</bean>

es mejor utilizar el atributo type de la siguiente manera:

<bean id="invasorService"

       class="com.dosideas.spring.InvasorService">
       <constructor-arg type="java.lang.String" value="Zim"/>
       <constructor-arg type="int" value="100"/>

</bean>

Utilizar index es mas sencillo, ya que tipeamos menos, pero es mas propenso a errores y mucho mas dificil de leer que si utilizamos type. Se deberia utilizar index solamente cuando se presenta una ambigüedad en los argumentos del constructor.