Introducción a Spring Data Couchbase

En este momento estoy tratando de obtener una comprensión de quién es la comunidad Couchbase, incluyendo cuántas personas leen estos posts blos, nos siguen en nuestras páginas de redes sociales, hacen preguntas en nuestro foro, nuestras listas de correo,etc. Por supuesto, necesito almacenar todos estos datos de series temporales en algún lugar.

Lo has adivinado: Voy a escribir sobre el almacenamiento de métricas basadas en el tiempo en Couchbase. Voy a usar Java y Spring para hacerlo, porque hay un proyecto bastante chulo llamado spring-data-couchbase que me va a facilitar mucho las cosas. Así que, a lo largo de tres entradas de blog explicaré cómo lo he hecho.

En primer lugar, unas palabras sobre Primavera. De su propio sitio web:

Spring Framework es una plataforma Java que proporciona un completo soporte de infraestructura para el desarrollo de aplicaciones Java. Spring se encarga de la infraestructura para que usted pueda centrarse en su aplicación.

Se podría decir que su propósito es que escribas sobre todo código de negocio y te centres en lo que quieres hacer, en lugar de escribir código de infraestructura y centrarte en cómo hacerlo. Lo bueno es que no tienes que comprar toda la plataforma. Spring se compone de muchos módulos diferentes. Puedes elegir el que quieras utilizar. La interacción entre estos módulos y tu código se basa principalmente en la Inversión de Control, también llamada Inyección de dependenciamás adelante.

Si no está familiarizado con Spring, le invito a que consulte la página Página de proyectos de primavera para obtener una rápida visión general de todos los temas que abordan. Empecemos.

Dependencias de arranque

Primero necesito arrancar mi proyecto con las dependencias apropiadas. Ya que estoy usando Spring, podría usar Spring Boot para hacerlo. Proporciona una forma opinada de construir aplicaciones Spring, asume varias opciones y favorece la convención sobre la configuración. Esto es perfecto para el pequeño proyecto que estoy escribiendo.

El primer paso para iniciar un nuevo proyecto Spring Boot sería ir a inicio.spring.io. Es un asistente que te permite elegir las dependencias con las que quieres empezar tu proyecto. El caso es que ahora mismo no hay posibilidad de elegir spring-data-couchbase. Así que acabé haciendo mi propio archivo pom. Es muy sencillo:

Puedes ver que estoy utilizando los proyectos spring-boot-starter-social-facebook y spring-social-twitter. Los proyectos sociales de Spring están aquí para ayudarte a conectar con proveedores de API SaaS como Facebook, Twitter, Linkedin, etc. Los proyectos spring-boot-starter-* se pueden ver como un bootstrap POM que viene con las dependencias apropiadas.

Y si desea una entrada spring-boot-starter-data-couchbase en el sitio start.spring.io por favor hable en nuestro foro o comentando este post.

Configuración

Hacía tiempo que no usaba Spring y tenía en mente que toda la configuración significaba lidiar con tediosos archivos XML. Me alegro de haber descubierto que las cosas han cambiado y ahora se puede declarar la configuración sólo con anotaciones. ¡Yupi!

Ahora que las dependencias están listas, ¡escribamos algo de código! Empecemos creando una clase Application que extienda la clase AbstractCouchbaseConfiguration.

Puedes ver que implemento tres métodos, todos necesarios para configurar la conexión de un cliente Couchbase a un bucket. Proporcionan una lista de URIs para los nodos del cluster, el nombre y la contraseña del bucket.

Para evitar la codificación de estos valores en la clase Java, he creado un archivo application.properties en la carpeta resources. Sus valores son recogidos automáticamente por Spring gracias a la anotación @Value. Presta atención al signo '$' utilizado para recuperar valores de un archivo de propiedades. El signo '#' se utilizaría para evaluar el EL tradicional.

Asegúrate de que las anotaciones @Configuration y @EnableAutoConfiguration están presentes ya que son necesarias en tiempo de ejecución. La primera asegura que los beans declarados en esta clase serán seleccionados por Spring. La segunda te proporciona un contexto de aplicación configurado automáticamente para asegurarte de que puedes ejecutar la aplicación Spring.

Unas palabras sobre IoC y la configuración abstracta de Couchbase

Uno de los principales paradigmas disponibles con Spring es IoC(Inversión del control). Le permite inyectar objetos. Esto significa que la instanciación del objeto se ha hecho por ti. La clase AbstractCouchbaseConfiguration que extendemos define algunos Beans que pueden ser inyectados en cualquier parte de la aplicación.

Ahora echa un vistazo al método commandLineRunner. Está anotado con @Bean y devuelve una instancia de CommandLineRunner (sí, es una clase anónima pero utiliza la expresión Lambda, gracias Java8). Esto significa que este CommandLineRunner será recogido por el Spring Framework. Su código será ejecutado por la llamada SpringApplication.run en el método main. Y como es un Spring Bean, IoC funciona a la perfección y el bean CouchbaseClient será inyectado automáticamente. Sólo tienes que pasarlo como parámetro del método.

Asegurarse de que funciona

Sólo para asegurarme de que la configuración funciona y de que todo está bien, crearé un simple objeto JSON, lo almacenaré en Couchbase, lo recuperaré de Couchbase y luego lo registraré.

Son sólo esas cuatro líneas de código que se ven en la página CommandLineRunner. Ahora todo debería funcionar. Si voy a la interfaz de administración web de Couchbase, puedo ver el documento en el bucket por defecto.

Ahora sé cómo arrancar un proyecto Spring, configurar una conexión Couchbase y almacenar objetos en Couchbase. Estoy listo para usar los conectores sociales de Spring y almacenar mis métricas. Y eso para la próxima entrada del blog. No dudes en comentar y compartir este :)

Autor

Publicado por Laurent Doguin

Laurent es un metalero empollón que vive en París. Principalmente escribe código en Java y texto estructurado en AsciiDoc, y a menudo habla sobre datos, programación reactiva y otras cosas de moda. También fue Developer Advocate de Clever Cloud y Nuxeo, donde dedicó su tiempo y experiencia a ayudar a esas comunidades a crecer y fortalecerse. Ahora dirige las relaciones con los desarrolladores en Couchbase.

3 Comentarios

  1. Gran artículo Laurent, gracias por compartirlo. Tal vez valga la pena señalar que hay\ ~ s esfuerzos en curso para añadir un módulo Boot starter dedicado a Spring Data Couchbase. Esto incluso simplificaría la configuración en el pom.xml un poco y automáticamente por defecto la configuración de la aplicación, también.

    Hablando del pom.xml - contiene bastantes partes que no son estrictamente necesarias que - si se eliminan - podrían hacerlo un poco menos intimidante:

    1. No es necesario declarar ninguno de los repositorios si se utilizan versiones Boot GA.
    2. La codificación de la fuente del proyecto ya está configurada por el pom padre de Boot.
    3. spring-data-commons es arrastrado por spring-data-couchbase de forma transitoria y por lo tanto no tiene que ser declarado necesariamente.

    Eso reduciría el pom.xml a la mitad de tamaño y se reduciría a tres dependencias y una declaración de plugin. Todavía suficiente XML para mi gusto, pero menos comida para que la gente se queje de Maven :).

    Espero con impaciencia los próximos episodios.

  2. Eduardo Rodríguez octubre 7, 2015 a 4:53 pm

    No veo que haya un indicador de salud para Couchbase DB.

  3. Arjun Kizhikkayil octubre 16, 2015 a 7:08 pm

    Hola me gustaría añadir archivos adjuntos a los documentos en couchbase utilizando datos de primavera jpa. Pero no hay métodos como guardar o actualizar los archivos adjuntos

Dejar una respuesta