La configuracion de las aplicaciones J2EE ha ido evolucionando de la mano de la innovación de java. De este modo y como iremos viendo a lo largo del artículo , determinados avances en el lenguaje han sido los propiciadores de la posibilitación de las nuevas opciones.

El modo de configuración más antiguo y que sigue vigente hoy en día es la utilización de ficheros de configuración. Con algunos detractores debido a su carácter engorroso tiene también grandes benefactores y aliados que siguen viendo en esta opción una solución adecuada. Si nos remontamos a los orígenes de J2EE la única manera de configurar era mediante el uso de archivos xml. Esta hegemonía se mantuvo en boga hasta aproximadamente 2004, fecha en la que se produjo un hito que lo cambiaría todo. Estamos hablando de la aparición de las anotaciones.

El lanzamiento de la revolucionaria Java 5 trajo consigo la puesta en escena de las anotaciones para dotar de potencia al lenguaje java y en particular al tema que nos trata en este artículo: la configuración de las aplicaciones J2EE.

Antes de profundizar en las fortalezas y debilidades de los ficheros de configuración y de las anotaciones es fundamental comentar la que se empieza a vislumbrar como la tercera alternativa: las interfaces funcionales. Se trata de otra aportación disrruptiva de una versión de java, la 8 en concreto y de entre la infinidad de usos que presenta se encuentra el de configuración.

A continuación vamos a describir las características principales de ambos modos de configuración.

Anotaciones

  • Facilidad y rapidez de implementación
  • Legibilidad
  • Riesgo de deslocalización entre el código.

Ficheros

  • Localización de la configuración en uno o varios archivos
  • Separación entre los POJO’s y su comportamiento
  • Independencia de la implementación.

En vista de lo indicado hay argumentos para elegir una u otra opción o incluso una combinación de ambas. En cualquier caso lo que si está claro es que anotaciones y ficheros de configuración son inversamente proporcionales y cuanto más se use uno menos se usará el otro..

¡Veamos un caso práctico!

En el siguiente enlace podéis acceder al fuente del proyecto.https://github.com/alvarotorresbotella/SpringJmsJdbcMultiConfig

Se trata de un proyecto J2EE Spring 4 mavenizado que lee y escribe en una cola MQ mediante JMS, consulta un API Rest, persiste en base de datos mediante JDBC y genera un fichero csv. El ejemplo es muy didáctico debido a su amplia variedad tecnológica y en cuanto a la lógica de negocio también es atractiva(*). A continuación vamos a describir el modo de realizar la configuraciión de tanto con anotaciones como con fichero.

Configuración mediante anotaciones

la clase AppConfig supone el centralizador de la configuración.

Como podemos observar incluye al conjunto de configuraciones, en este caso la de JmsTemplate , JdbcTemplate y RestTemplate contenidas en las clases JmsConfig , JdbcConfig y RestConfig respectivamente , a continuación las veremos con detalle pero antes comentar la necesidad de incluir @Configuration para definir a la clase como una clase de configuración, @ComponentScan para indicar la paquetización base sobre la que se aplica la configuración e @Import incluyendo las clases de configuración.