Por José Luis Rodríguez Alonso
¿Cómo elegir la implementación concreta de una interfaz mediante un fichero de configuración?
En este proyecto, tenían una interfaz para un servicio y dos implementaciones. La implementación final se elige según un valor en la configuración del proyecto, de forma que es posible desplegar la app en varios servidores y elegir en cada uno, una opción diferente.
El código existente era similar a este (lo he simplificado un poco para el ejemplo):
|
|
Luego, en el archivo de configuración (application.yml
) de cada destino, se especifica el tipo de servicio que se necesita:
product-service:
type: file
Para mi tarea solo necesitaba crear una nueva implementación que no retornara nada. De forma que pudiera desactivar ese servicio, sin necesidad de modificar otras partes del código. Una variación simplificada del patron Null Object, algo así sería suficiente:
|
|
Spring tiene una forma de testear este tipo de componentes condicionales. Por si algún día lo necesitas, se puede hacer con algo así:
|
|
Este test, en lugar de arrancar toda la aplicación, solo crea un ApplicationContext
con la información indicada, haciendo que se ejecute mucho más rápido.
Puesto que la inyección de dependencias la gestiona Spring Boot, puede que en determinados momentos como en este, queramos tener tests que se aseguran de que todo está configurado como esperamos. Esta es una manera de hacerlos.
¿Quieres más? te invitamos a suscribirte a nuestro boletín para avisarte cada vez que recopilemos contenido de calidad que compartir.
Si disfrutas leyendo nuestro blog, ¿imaginas lo divertido que sería trabajar con nosotros? ¿te gustaría?
Pero espera 🖐 que tenemos un conflicto interno. A nosotros las newsletter nos parecen 💩👎👹 Por eso hemos creado la LEAN LISTA, la primera lista zen, disfrutona y que suena a rock y reggaeton del sector de la programación. Todos hemos recibido newsletters por encima de nuestras posibilidades 😅 por eso este es el compromiso de la Lean Lista