Uma introdução ao Spring Data Couchbase

No momento, estou tentando entender quem é a comunidade do Couchbase, incluindo quantas pessoas leem essas postagens do blos, nos seguem em nossas páginas de redes sociais, fazem perguntas em nosso fórum, em nossas listas de discussão etc. É claro que preciso armazenar todos esses dados de série temporal em algum lugar.

Você adivinhou: Vou escrever sobre o armazenamento de métricas baseadas em tempo no Couchbase. Usarei Java e Spring para fazer isso, porque há um projeto muito legal chamado base de dados de mola que facilitará muito as coisas para mim. Portanto, em três publicações do blog, explicarei como fiz isso.

Primeiro, algumas palavras sobre Primavera. Em seu próprio site:

O Spring Framework é uma plataforma Java que oferece suporte abrangente à infraestrutura para o desenvolvimento de aplicativos Java. O Spring cuida da infraestrutura para que você possa se concentrar no seu aplicativo.

Pode-se dizer que seu objetivo é que você escreva principalmente código comercial e se concentre no que deseja fazer, em vez de escrever código de infraestrutura e se concentrar em como fazer isso. Uma coisa boa é que você não precisa comprar a plataforma inteira. O Spring é composto de muitos módulos diferentes. Você pode escolher o que deseja usar. A interação entre esses módulos e o seu código é orientada principalmente pela Inversão de Controle, também chamada de Injeção de dependênciaMais sobre isso depois.

Se você não estiver familiarizado com o Spring, convido-o a dar uma olhada no Página de projetos de primavera para obter uma visão geral rápida de todos os tópicos abordados. Agora vamos começar.

Dependências de boot-strapping

Primeiro, preciso inicializar meu projeto com as dependências apropriadas. Como estou usando o Spring, é melhor usar o Spring Boot para fazer isso. Ele fornece uma maneira opinativa de criar aplicativos Spring, assume várias opções e favorece a convenção em vez da configuração. Isso é perfeito para o pequeno projeto que estou escrevendo.

A primeira etapa para iniciar um novo projeto do Spring Boot seria ir para start.spring.io. É um assistente que permite que você escolha as dependências com as quais deseja iniciar o projeto. O problema é que, no momento, não há possibilidade de escolher o spring-data-couchbase. Por isso, acabei fazendo meu próprio arquivo pom. É muito simples:

Você pode ver que estou usando os projetos spring-boot-starter-social-facebook e spring-social-twitter. Os projetos sociais do Spring estão aqui para ajudá-lo a se conectar a provedores de API SaaS como Facebook, Twitter, Linkedin etc. Os projetos spring-boot-starter-* podem ser vistos como um POM de bootstrap que vem com as dependências apropriadas.

E se você quiser uma entrada para o spring-boot-starter-data-couchbase no site start.spring.io, entre em contato com o nosso fórum ou comentando esta postagem.

Configuração

Não uso o Spring há muito tempo e tinha em mente que toda a configuração significava lidar com tediosos arquivos XML. Estou feliz por ter descoberto que as coisas mudaram e agora você pode declarar a configuração somente com anotações. Muito bom!

Agora que as dependências estão todas definidas, vamos escrever algum código! Vamos começar criando uma classe Application que estende a classe AbstractCouchbaseConfiguration.

Você pode ver que implementei três métodos, todos necessários para configurar uma conexão de cliente do Couchbase com um bucket. Eles fornecem uma lista de URIs para os nós do cluster, o nome e a senha do bucket.

Para evitar a codificação desses valores na classe Java, criei um arquivo application.properties na pasta resources. Seus valores são automaticamente coletados pelo Spring graças à anotação @Value. Preste atenção ao sinal '$' usado para recuperar valores de um arquivo de propriedades. O sinal '#' seria usado para avaliar a EL tradicional.

Certifique-se de que as anotações @Configuration e @EnableAutoConfiguration estejam presentes, pois elas são necessárias em tempo de execução. A primeira garante que os beans que você declarou nessa classe serão escolhidos pelo Spring. A segunda fornece um contexto de aplicativo configurado automaticamente para garantir que você possa executar o SpringApplication.

Uma palavra sobre IoC e configuração abstrata do Couchbase

Um dos principais paradigmas disponíveis no Spring é o IoC(Inversão de controle). Ele permite que você injete objetos. Isso significa que a instanciação do objeto foi feita para você. A classe AbstractCouchbaseConfiguration que estendemos define alguns Beans que podem ser injetados em qualquer lugar do aplicativo.

Agora, dê uma olhada no método commandLineRunner. Ele é anotado com @Bean e retorna uma instância do CommandLineRunner (sim, é uma classe anônima, mas usa a expressão Lambda, obrigado, Java8). Isso significa que esse CommandLineRunner será capturado pelo Spring Framework. Seu código será executado pela chamada SpringApplication.run no método principal. E como se trata de um Spring Bean, a IoC funciona imediatamente e o bean CouchbaseClient será injetado automaticamente. Você só precisa passá-lo como um parâmetro de método.

Garantir que funcione

Apenas para garantir que a configuração funcione e que tudo esteja bem, criarei um objeto JSON simples, armazená-lo-ei no Couchbase, recuperá-lo-ei do Couchbase e, em seguida, registrarei o log.

São apenas essas quatro linhas de código que você vê no arquivo CommandLineRunner. Agora tudo deve funcionar. Se eu acessar a interface de administração da Web do Couchbase, poderei ver o documento no bucket padrão.

Agora sei como inicializar um projeto do Spring, configurar uma conexão com o Couchbase e armazenar objetos no Couchbase. Estou pronto para usar os conectores sociais do Spring e armazenar minhas métricas. E isso fica para a próxima postagem do blog. Não hesite em comentar e compartilhar este post :)

Autor

Postado por Laurent Doguin

Laurent é um nerd metaleiro que mora em Paris. Em sua maior parte, ele escreve código em Java e texto estruturado em AsciiDoc, e frequentemente fala sobre dados, programação reativa e outras coisas que estão na moda. Ele também foi Developer Advocate do Clever Cloud e do Nuxeo, onde dedicou seu tempo e experiência para ajudar essas comunidades a crescerem e se fortalecerem. Atualmente, ele dirige as Relações com Desenvolvedores na Couchbase.

3 Comentários

  1. Ótima postagem, Laurent, obrigado por compartilhar. Talvez valha a pena observar que o esforços contínuos para adicionar um módulo inicial de inicialização dedicado ao Spring Data Couchbase. Isso simplificaria um pouco a configuração no pom.xml e também a configuração padrão automática do aplicativo.

    Falando sobre o pom.xml, ele contém algumas partes que não são estritamente necessárias e que, se removidas, podem torná-lo um pouco menos intimidador:

    1. Nenhum dos repositórios precisa ser declarado se você estiver usando versões do Boot GA.
    2. A codificação da fonte do projeto já está configurada pelo pom principal do Boot para você.
    3. spring-data-commons é puxado pelo spring-data-couchbase transitivamente e, portanto, não precisa necessariamente ser declarado.

    Isso praticamente reduziria o pom.xml à metade do tamanho e se resumiria a três dependências e uma declaração de plug-in. Ainda há XML suficiente para o meu gosto, mas há menos motivos para as pessoas reclamarem do Maven :).

    Aguardamos ansiosamente os próximos episódios!

  2. Eduardo Rodriguez outubro 7, 2015 em 4:53 pm

    Não vejo que haja um indicador de integridade para o Couchbase DB.

  3. Arjun Kizhikkayil outubro 16, 2015 em 7:08 pm

    Olá, gostaria de adicionar anexos a documentos no couchbase usando o spring data jpa. Mas não há métodos como salvar ou atualizar para anexos

Deixar uma resposta