Convertir a Spring-boot + cxf servicio con Spring +cxf

¿Se puede spring-boot- ificar un servicio rest con cxf y spring?. La respuesta es sí.
Spring-boot es un reciente paradigma de desarrollo, con un "bestial" comportamiento de convención sobre configuración. Si has llegado aquí tú o alguien podrá justificarte la razón de su uso, el ¿porqué? ,yo me centraré en el ¿cómo?.
Algunas considerarciones: al pasar a spring-boot los archivos xml desaparecen o pasan a la mínima expresión, no aplicationContext.xml, no context.xml, no web.xml y por defecto necesitamos usar un contenedor del api servlet 3.0 o superior.
Tengo que reconocer que me llamó la atención crear aplicaciones web sin el descriptor de despliegue.
El punto de partida es crear un proyecto rest con cxf y spring. Por algún extraño motivo las librerías jackson que siguen metiendo son versión 1.X,
Vemos que tenemos la configuración de los servicios en un xml y tenemos nuestro descriptor de despligue.
Empecemos por pom.xml añadiendo el parent habitual de spring-boot.

El resto es pasar la configuración de los xml, que no se establece automáticamente por defecto, a la clase de configuración principal.


Una vez realizados estos pasos ya podemos lanzar la aplicación con "mvn spring-boot:run".
A nivel de proyecto es meter spring-boot y dejar la parte de cxf, Necesitamos añadir el provider de jackson, que he aprovechado para actualizarlo hasta la versión 2.4.0 de "jackson-jaxrs-json-provider".
Se nos queda en 4 dependencias !!! y lo he configurado para probar también sobre un tomcat.

La clase anotada con @SpringBootApplication contiene la inicialización básica para de cualquier proyecto web con spring-boot, la importación de recursos de cxf , el registro del servlet y la inyección de un servicio "HelloWorld" proporcionado por el arquetipo generado.

Cumplidos todos los pasos ya podemos eliminar todos los archivos xml y empezar a disfrutar y sufrir las bondades de spring-boot.

Comentarios