Published on

Incluindo Lombok em sua aplicação Java

Authors

Olá, no post de hoje, vamos ver como incluir o lombok na nossa aplicação Java.

Primeiro, o que é o Lombok?

Site do projeto: https://projectlombok.org/

Basicamente o Lombok é um projeto que diminui a necessidade de ficar implementando um monte de código java que criamos em nossas classes. Ex: métodos get e set, builders, construtores, toString, hascode, etc. Com o lombok, basta anotarmos nossas classe com algumas anotações, que em tempo de compilação, o lombok gera todos esses métodos automaticamente, o que deixa nossa classe muito mais simples.

Classe sem anotações lombok (e nem consideramos o builder):

import java.util.Objects;

public class Pessoa {

    private String nome;
    private Integer idade;

    public Pessoa() {
    }

    public Pessoa(String nome, Integer idade) {
        this.nome = nome;
        this.idade = idade;
    }


    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public Integer getIdade() {
        return idade;
    }

    public void setIdade(Integer idade) {
        this.idade = idade;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Pessoa pessoa = (Pessoa) o;
        return Objects.equals(nome, pessoa.nome) &&
                Objects.equals(idade, pessoa.idade);
    }

    @Override
    public int hashCode() {
        return Objects.hash(nome, idade);
    }

    @Override
    public String toString() {
        return "Pessoa{" +
                "nome='" + nome + '\'' +
                ", idade=" + idade +
                '}';
    }
}

Classe com anotações lombok:

import lombok.Value;

@Value
public class PessoaLombok {

    private String nome;
    private Integer idade;

}

A anotação @Value gera vários códigos: toString(), equal(), hashCode(), construtor com todos as propriedades, métodos getter. Obs: O @Value gera classes imutáveis, dessa forma não é possível utilizar os famosos métodos Setters, para criar classes mutáveis, deve ser utilizada a anotação @Data.

Incluindo no nosso projeto.

Como nem tudo são flores, o primeiro passo é incluir o plugin do lombok em nossa IDE, esse passo é importante, pois dessa forma a IDE consegue entender os métodos gerados:

Eclipse

Intellij

O próximo passo é incluir a dependência no nosso pom.xml:

<dependencies>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.8</version>
        <scope>provided</scope>
    </dependency>
</dependencies>

Pronto, o lombok está configurado no nosso projeto, abaixo segue as anotações mais utilizadas comumente:

@Getter e @Setter: Como o nome sugere, gera os getters e setters de uma classe, pode ser utilizados sozinhos ou juntos, em classes ou em atributos;

@NoArgsConstructor e @AllArgsConstructor: Como o nome sugere, gera métodos construtores;

@Builder: Implementa o padrão de projetos "Builder", basicamente, gera uma classe e um método que torna possível criar uma nova instância da classe anotada. É muito útil na criação de classes imutáveis;

@Data: Muito parecido com a anotação @Value, no entanto, gera classes mutáveis, bastante útil em classes do tipo DTO;

@Value: Como descrito acima, gera classes imutáveis e outros métodos comuns no dia a dia (equals, hashCode, toString);

Existem varias outras funcionalidades do lombok que podem ser encontradas aqui: https://projectlombok.org/features/all

Os exemplos utilizados nesse post pode ser encontrados aqui: https://github.com/cezarcruz/codigos-do-site/tree/master/exemplos-lombok

Não tenha medo de utilizar o lombok, existem ferramentas capaz de remover o código lombok e gerar as classes como antigamente, mas incluído o lombok no projeto e visto os benefícios, acho dificil voltar.

Qualquer duvida, deixe uma mensagem no chat abaixo. Abraços.