Postagens

Criando uma Aplicação com SpringBoot e MongoDB

Olá pessoal hoje iremos ver como criar uma aplicação utilizando SpringBoot e o banco NoSQL MongoDB.

Criando o Projeto Para criar um sistema usando o SpringBoot a melhor maneira seria criar o projeto via Maven, este processo pode ser realizado de várias maneiras: SpringInitializr;SpringIDE;Adicionar as dependências diretamente no pom.xml.  Segue como ficou o pom.xml do projeto:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56<?xml version="1.0" encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>br.com.cvinicius</groupId><artifactId>boot-data-mongodb</artifactId><ver…

Criando objetos com @Builder e @Value do framework Lombok

Imagem
Hoje iremos ver como utilizar as anotações @Builder e @Value do framework Lombok, visando melhorar a forma de criação de objetos.

Utilizando a anotação @Builder
O nome vem do Pattern Builder, que é um pattern que visa a criação de objetos, ou seja é um pattern de Criação.
Vamos analisar a classe abaixo:
1 2 3 4 5 6 7@Getter@BuilderpublicclassCliente{private String nome;private String cnpj;private String endereco;}
O arquivo compilado irá ter a seguinte estrutura:


No exemplo acima, notamos que o Lombok criou uma classe interna chamada ClienteBuilder, seguindo os preceitos do pattern, agora podemos criar um objeto Cliente utilizando uma forma fluente, assim deixando o código mais simples e funcional, como abaixo:

1 2 3 4 5Cliente.builder().nome("Nome do Cliente").cnpj("1234567890").endereco("São Paulo").build();
Quando trabalhamos com a criação de modelos de domínio complexos, onde cada entidade possui vários relacionamentos e atributos o uso dessa abordagem …

Melhorando a qualidade do código com Lombok

Imagem
Olá pessoal, hoje iremos ver como podemos melhorar a escrita do código Java evitando o famoso "Don't repeat your self", conhecido também como código boilerplate, isso tudo usando o projeto Lombok.

O famoso código boilerplate
O código boilerplate é aquele que a linguagem ou tecnologia, nos obriga a fazer para criar classes, métodos, e compor comportamentos aos nossos sistemas, no Java, temos muitos pontos que fazemos código boilerplate, as vezes nem percebemos, pois já estamos acostumados com a estrutura da linguagem.
Com a evolução da plataforma Java, vários recursos foram introduzidos, que nos ajudou a reduzir o famoso código boilerplate, tais como: Lambdas, Streams, Optional, Default Methods, etc.
Apesar da constante evolução da plataforma, ainda existem pontos que precisamos executar de forma manual, ou com a ajuda das IDEs, vamos avaliar alguns deles: Getters/Setters;Construtores;Equals e HashCode;toString();Variáveis de log e depuração.  Mas a grande vantagem da plat…

Melhorando a sobrescrita dos métodos equals() e hashCode()

Olá hoje iremos melhorar a forma que realizamos uma tarefa que muitos desenvolvedores não gostam de fazer, ou até mesmo deixam de lado, mas é de extrema importância para o correto funcionamento dos nossos Objetos, que é a sobrescrita dos métodos equals e hashCode().

Sobrescrita utilizando uma IDE
A maioria das IDEs realizam a tarefa de sobrescrever os métodos equals(Object o) e hashCode(), mas o código gerado não é dos melhores, vamos analisar um exemplo da geração automática usando a IDE Eclipse, segue o código:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37publicclassCliente{private String cpf;publicCliente(String cpf){this.cpf= cpf;}public String getCpf(){return cpf;}@OverridepublicinthashCode(){finalint prime =31;int result =1; result = prime * result +((cpf ==null)?0: cpf.hashCode());return result;}@Overridepublicbooleanequals(Object obj){if(this== obj)returntrue;if(obj ==null)returnfalse;if(getClass()!= obj.getClas…

Autenticação com SpringBoot, SpringSecurity e AngularJS - Parte 2

Concluindo a rotina de autenticação, agora iremos criar a camada de frontend, usando o AngularJS.

Criando a Factory
O primeiro processo é criar uma camada para acesso ao serviço de autenticação, o mesmo se encontra na url /login, o código abaixo representa uma factory para encapsular o acesso a camada backend:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24(function(){ angular.module("auth").factory("authAPI", authAPI); authAPI.$inject = ["$http"]; function authAPI($http){ return{ authenticate:function(params){ var req = { url:'/login', method:'POST', headers: {'Content-Type':'application/x-www-form-urlencoded'}, data: $.param(params) }; return $http(req); } }; }; })();
Vamos analisar o código:
Criamos um factory para encapsular o acesso a camada de backend;Linha 5: Injeção do componente $http;Linha 11: Declaração na função cham…