Arquitetura de MicroServices com Spring Cloud e Spring Boot — Parte 5

Diego Brener da Silva
Coderef
Published in
5 min readDec 19, 2017

--

Sumário

  1. Introdução
  2. Implementando o Config Server.
  3. Subindo um Eureka Server e conectando-o ao Config Server.
  4. Construindo um Servidor de Autorização OAuth2.
  5. Implementando Serviço de Pedidos.

Microserviço de Pedido

Olá pessoal, enfim voltamos com nossas publicações. Dando continuação a nossa sequencia de stories sobre microservice, nessa storie vamos criar nosso microserviço de pedido, que será responsável por criar, listar e apagar um pedido criado. Veremos também como integrar esse microserviço ao servidor de autorização criado na storie anterior, então bora lá.

Gerando o Projeto

Acesse o site do Spring Initializr e preencha as configurações como na imagem. Escolhemos qual vai ser o gerenciador de dependências (Maven), a linguagem de programação (Java), as dependências necessárias para o projeto (Cloud OAuth2, Actuator, Config Client e Eureka Discovery, JPA, MySql, web)e configuramos os metadados do Maven. Por fim geramos o projeto clicando em Generate Project, Ctrl + Enter ou Command + Enter. (Atenção para a versão do Spring, estamos usando a 1.5 nesse projeto)

Vamos descompactar o projeto na pasta delivery, assim como fizemos antes.

Implementando a aplicação

Como sempre fazemos, iremos abrir o pom.xml e ver as dependências geradas, a maioria já conhecemos, mas vou frizar uma:

  • spring-cloud-starter-oauth2: Colocamos novamente essa dependência e iremos coloca-la novamente em projetos futuros, pois ela será necessária para implementarmos a conexão com o authorization server.

Vamos criar os arquivos de configuração, neles serão definidas algumas propriedades importantes que serão utilizadas na nossa aplicação. Vamos começar criando nosso bootstrap.yml, salve esse arquivo em delivery-order-service/src/main/resouces.

Como vimos na parte 3, nossa aplicação terá que buscar as configurações no Config Server, para isso especificamos novamente a propriedade spring.cloud.config.uri . Após criado nosso bootstrap.yml vamos criar nosso arquivo de configuração no repositório que o Config Server está usando tal, como vimos na parte 2, crie delivery-order-service.yml com:

Vamos repassar algumas configurações que são novidades para nós até o momento:

  • authserver.hostname: Parametro apenas para ser reutilizado em userInfoUri.
  • security.oauth2.resource.userInfoUri: Url que o spring irá utilizar para validadar o token recebido na requisição.

Agora temos 4 arquivos no repositório de configuração contando com o arquivo de exemplo:

Considerando que você já esteja com o projeto aberto na sua IDE favorita, vamos criar a seguinte estrutura de pacotes com as seguintes classes:

Desconsidere os diretórios .idea e .mvn .

Agora vamos implementar cada classe e ver seu conteúdo.

Order

Entidade que representará nosso pedido, iremos utilizar as anotações @NotEmpty e @NotNull na classe OrderService para validar as propriedades do nosso pedido.

OrderRepository

Essa interface será responsável por fazer a “ponte” entre nossa camada de negócio e o banco de dados, podemos ver que ela está estendendo a Interface CrudRepository ela é uma interface do Spring Data JPA que fornece uma funcionalidade CRUD completa para a entidade que está sendo gerenciada.

OrderService

Aqui estará nosso @Service nele poderiamos implementar ou chamar um fluxo de negócio relativo a nossa entidade.

OrderController

Aqui vamos expor nossos endpoints, para que seja possível o acesso.

ExceptionHandlerController

Essa controller será responsável por interceptar e tratar as exceções lançadas pela nossa aplicação:

SecurityConfiguration

Essa classe vai ativar nosso Resource Server e mapear cada role para seu method especifico:

DeliveryOrderServiceApplication

Por último implementamos nossa classe principal, que será responsável por inicializar nossa aplicação Spring Boot como vimos na parte 2. Aqui temos uma anotação nova a @EnableEurekaClient. Essa anotação torna nossa aplicação visível ao Eureka Server com base nas configurações que definimos no application.yml .

Subindo a aplicação

Agora chegou a hora subir o nosso MicroService, antes de inciar será necessário subir o Config Server , Eureka Server e o Authorization Server. Quando os três estiverem online vamos executar a classe DeliveryOrderServiceApplication.java. Finalizado, acesse o endereço http://localhost:9091/ nosso servidor vai aparecer listado no Eureka Server:

Criando um Pedido

Antes de fazermos a requisição para o nosso MicroService, será necessário solicitarmos um token para nosso Authorization Server. Vamos abrir o Postman e criar uma nova requisição:

Clique em Send. Uma resposta similar a imagem abaixo será retornada:

Copiaremos o access_token e o token_type , pois será eles que iremos utilizar na próxima requisição.

Agora que já temos um token vamos criar nosso primeiro pedido. Vamos até o Postman novamente e preencher:

Clique em Headers e preencha com:

  • Content-Type: application/json.
  • Authorizarion: cole o token_type e o access_token com um espacinho entre os dois.

Clique em body, depois em raw e selecione JSON(application/json), preencha o TextArea com um json similar ao conteúdo abaixo:

Clique em Send, um pedido com id será retornado na requisição representando que o pedido foi criado com sucesso.

Pronto, agora podemos realizar os mesmo passos para os endpoints de busca e apagar, não podemos esquecer que alguns possuem parametros na requisição e que se não forem passados pode ocorrer erro.

Referências

http://projects.spring.io/spring-security-oauth/https://tools.ietf.org/pdf/draft-ietf-oauth-v2-31.pdf https://docs.spring.io/spring-data/data-commons/docs/1.6.1.RELEASE/reference/html/repositories.html

Repositório

https://github.com/diegosilva13/delivery

--

--