Projeto Flash

Projeto Flash

Para iniciarmos nosso projeto primeiramente vamos criar nossa base de projeto Spring Boot pelo SpringInitializr.

Não foi fornecido texto alternativo para esta imagem
Iniciando o projeto

Com nosso projeto iniciado, vamos começar pela camada mais externa do nosso projeto o controller, nele vamos trabalhar com nossa primeira feature : registerCompany (cadastrar empresa).

Com o protótipo de tela de cadastro teremos uma visão melhor da nossa feature.

Não foi fornecido texto alternativo para esta imagem
Protótipo de tela de cadastro de empresa


Depois de criar o pacote controller, adicionamos a classe CompanyController ao pacote. Vamos utilizar as anotações @RestController e @RequestMapping na nossa classe, feito isso vamos montar nosso endpoint. Utilizamos a anotação @PostMapping e então adicionamos o modificador de acesso ao nosso endpoint. Vamos usar uma entidade de resposta passando o tipo de retorno seguido do nome do método, vamos passar como parâmetros um dto que vai nos dar mais segurança ao transitar os dados entre as camadas da aplicação, depois especificamos o retorno com nossa entidade de resposta que vai nos mostrar o status http e o body. No body passamos como argumento o objeto companyService seguido do seu método que contém a regra de negócio armazenado no pacote service.

Não foi fornecido texto alternativo para esta imagem
Camada_Controller_Company


Vamos criar o pacote service e dentro dele uma interface. Adicionamos a interface CompanyService para a abstração da implementação. Nela vamos adicionar um método para cadastrar a empresa passando como parâmetro um objeto da classe de entidade.

Não foi fornecido texto alternativo para esta imagem
Interface_Service_Company

No mesmo pacote ainda vamos separar mais um pacote chamado impl onde vamos guardar nossas classes de serviço. Iniciamos uma classe no pacote impl e usamos a anotação @Service que indica que aquela classe é uma classe de serviço. Na classe de serviço implementamos a interface de abstração e vamos montar nossa primeira regra de negócio : iniciamos a regra com a anotação @Transactional que nos permite garantir a ACID que é uma estrutura de banco de dados que garante seu correto funcionamento e impede que dados sejam corrompidos ou perdidos no processamento de transações.

Colocamos o modificador de acesso seguido do tipo de retorno esperado e o nome do método com o seguinte parâmetro, um objeto do tipo da entidade. Para a regra de negócio vamos estipular que nenhuma empresa pode ser salva se ela já existir no banco de dados então para realizar a validação vamos usar uma estrutura de decisão onde vamos buscar através do repository se o cnpj informado pelo usuário já está ativo no banco de dados, se a resposta obtida for false então podemos salvar, do contrário não será possivel realizar a operação.

Não foi fornecido texto alternativo para esta imagem
Classe_Company_Service


Criamos mais um pacote chamado repository e dentro dele uma interface com o nome CompanyRepository, que estende o JpaRepository, na interface declaramos um método para realizar a verificação do cnpj no banco de dados.


Não foi fornecido texto alternativo para esta imagem
Repository_Interface_Company

Criamos o pacote exception e dentro dele a classe EntityException que irá nos ajudar a tratar as exceções, ela estende de RuntimeException. Iniciamos um construtor com o mesmo nome da classe passando como parâmetro uma String e tendo como resposta a mensagem explicitada no service.

Não foi fornecido texto alternativo para esta imagem
Classe_Entity_Exception


Criamos o pacote model que irá guardar nossas entidades, dentro do pacote criamos nossa primeira entidade a CompanyModel. Usamos a anotação @Entity para informar que a classe se trata de uma entidade do banco de dados, adicionamos os atributos que vão compor nossa empresa, como chave primária da entidade vamos usar o id, e também vamos deixar o id para gerar valores automáticos. Nossa entidade é composta por atributos, contrutores, getters e setters e para finalizar o ToString.

Não foi fornecido texto alternativo para esta imagem
Não foi fornecido texto alternativo para esta imagem
Não foi fornecido texto alternativo para esta imagem
Entidade_Company_Model

Vamos Criar o pacote Dto e dentro dele a classe CompanyDto, nessa classe vamos colocar os atributos que acharmos pertinentes ao conhecimento do usuário e suas anotações correspondentes. Criamos um método que irá fazer a transferência de dados passando um dto para uma entidade, além disso nossa classe conta com getters, setters e ToString.

Não foi fornecido texto alternativo para esta imagem
Não foi fornecido texto alternativo para esta imagem
Classe_DTO_Company

Quero agradecer pela atenção destinada a esse artigo, lembrando que essa é a nossa primeira feature.

Até a próxima!

Atenciosamente Silvia Santos Martins.

Tiago S F Neves

Professor | Consultor e Analista de Negócios de TI | Desenvolvimento Web | Mobile | Banco de Dados | Gamificação | Metodologia Ágil

1 a

Grande Silvia!!! Parabéns

Entre para ver ou adicionar um comentário

Outras pessoas também visualizaram

Conferir tópicos