No anterior dois Nas postagens, vimos como começar a usar o Dados do Spring Couchbase. Agora é hora de ficar um pouco mais sofisticado (lembre-se de que sofisticado ou avançado não significa mais complicado). Vamos dar uma olhada em algumas das coisas excelentes que você pode fazer, como armazenamento em cache, validação de documentos e exposição do seu repositório por meio de uma API REST.

Armazenamento em cache

O módulo principal do Spring oferece um recurso muito bom abstração de cache com suporte para JSR-107 (JCache). Vamos ver um exemplo. Para garantir que o resultado de um método seja armazenado em cache, posso simplesmente usar a seguinte anotação:

Aqui, "myCache" é o nome de uma instância de cache existente que eu configurei. A chave do documento será resolvida usando a regex de chave "'cache:'+#param", em que #param é o parâmetro do método denominado 'param'. Isso garantirá que, para o mesmo parâmetro, o método seja executado apenas uma vez. Quando for chamado no futuro, o resultado será obtido do cache. Ou seja, do Couchbase, se eu tiver configurado meu aplicativo adequadamente. Para definir uma instância de cache, adicione o seguinte à sua configuração:

e o @EnableCaching em sua classe de configuração.

Se você já estiver usando o sistema de cache do Spring, é muito fácil substituir o armazenamento atual pelo Couchbase. Apenas certifique-se de que o cacheManager que você está usando seja uma implementação do CouchbaseCacheManager.

Validação de documentos

A validação de campo é uma tarefa comum ao lidar com objetos de negócios. Um exemplo seria garantir que um campo especificado não seja nulo antes de armazená-lo no Couchbase, ou que um campo não tenha mais de 140 caracteres. E a boa notícia é que isso é realmente muito fácil. Posso usar a validação do Hibernate. A primeira coisa a fazer é adicionar a dependência necessária ao meu pom:

A próxima etapa é adicionar um bean ValidationListener que lançará uma ConstraintViolationException quando o objeto a ser armazenado não atender ao requisito de validação:

@Bean ValidatingCouchbaseEventListener validationEventListener() { return new ValidatingCouchbaseEventListener(validator()); }

Agora que a configuração obrigatória está concluída, posso adicionar qualquer anotação de validação do Hibernate ao meu objeto POJO desta forma:

Agora, toda vez que meu aplicativo tentar salvar um objeto em que essa propriedade específica estiver definida como nula, receberei uma ConstraintViolationException.

É claro que há muitas outras anotações além de @NotNull. Você pode encontrá-las na seção Documentação do Spring.

Expor o repositório com uma API REST

Ter um repositório disponível em tão pouco tempo é ótimo, mas o que é ainda melhor é o fato de que você pode expô-lo por trás de uma API REST apenas adicionando uma dependência. Isso requer o uso do spring-data-rest-webmvc. Portanto, eu o adiciono às minhas dependências desta forma:

E voilà (sinto-me no direito de escrever voilà, sabe, por causa da minha origem francesa). Todos os objetos desse repositório estão expostos HATEOAS estilo:

Só não se esqueça de adicionar getters, como eu fiz, se quiser ver algumas propriedades em seus documentos JSON...

Isso é tudo para esta série de postagens de blog sobre o Spring Data Couchbase. Comente e compartilhe, diga-nos se deseja mais recursos do Spring e do Couchbase, diga-nos se você usa ou deseja usar.

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.

Um comentário

  1. Matthew Fontana julho 10, 2016 em 11:09 pm

    Você tem o link para o código-fonte desse projeto? Estou tendo alguns problemas para fazer com que a dependência do Spring-data-rest-webmvc exponha meu repositório

Deixar uma resposta