Postagens

Criando objetos com @Builder e @Value do framework Lombok

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…

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

Hoje iremos analisar o processo de autenticação em uma aplicação que utiliza SpringBoot, SpringSecurity e AngularJS.

Conhecendo o SpringSecurity
Em toda aplicação o processo de autenticação é extremamente importante, sendo um dos requisitos não funcionais mais importantes em 80% das aplicações.
Para executar tal tarefa , podemos criar rotinas ou usar frameworks já preparados para os mais diferentes cenários, no caso, vamos analisar o SpringSecurity, este faz parte dos componentes da plataforma Spring.
Um ponto bem interessante do SpringSecurity, é que ele pode ser usando em projetos que usam ou não o Spring em sua essência, por exemplo, um projeto feito somente com JEE, pode usar o SpringSecurity para gerenciar a parte de segurança normalmente, para mais detalhes podemos acessar a documentação oficial:
http://docs.spring.io/spring-security/site/docs/4.1.3.RELEASE/reference/htmlsingle/
Integrando o SpringSecurity com SpringBoot
Para utilizar o SpringSecurity em uma aplicação SpringBoot,…