Lombok no Projeto Spring Boot

O Lombok é uma biblioteca Java que reduz a necessidade de escrever código repetitivo, como getters, setters, equals, hashCode, e construtores. Com Lombok, o código fica mais limpo e enxuto.

Dependência Lombok no pom.xml

No arquivo pom.xml, adicione a dependência do Lombok:

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

Configurando no build.gradle

O projeto terá a seguinte estrutura:

livraria-springboot
│── src
│ ├── main
│ │ ├── java/com/livraria
│ │ │ ├── LivrariaApplication.java
│ │ │ ├── model/Livro.java
│ │ │ ├── repository/LivroRepository.java
│ │ │ ├── service/LivroService.java
│ │ │ ├── controller/LivroController.java
│ │ ├── resources
│ │ │ ├── application.properties
│── build.gradle
│── settings.gradle
│── gradlew
│── gradlew.bat

Abra o arquivo build.gradle e adicione as dependências:

plugins {
id 'java'
id 'org.springframework.boot' version '3.2.1'
id 'io.spring.dependency-management' version '1.1.4'
}

group = 'com.livraria'
version = '1.0.0'
sourceCompatibility = '17'

repositories {
mavenCentral()
}

dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'com.h2database:h2'
implementation 'org.projectlombok:lombok'

annotationProcessor 'org.projectlombok:lombok'

testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

tasks.named('test') {
useJUnitPlatform()
}

Dica: Se estiver usando o IntelliJ IDEA, ative o plugin Lombok em Settings > Plugins > Lombok e marque a opção “Enable annotation processing” em Settings > Build, Execution, Deployment > Compiler > Annotation Processors.

Implementação do Lombok

Se você ainda não configurou um projeto ou não possui um exemplo para implementação, pode usar este projeto como base: Iniciando com Spring Boot e Java. Ele servirá como referência para a aplicação do Lombok.

Atualizando a Classe Livro com Lombok

Agora, vamos modificar a entidade Livro para utilizar as anotações do Lombok.

Antes (sem Lombok):

package com.livraria.model;

import jakarta.persistence.*;

@Entity
@Table(name = "livros")
public class Livro {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String titulo;
private String autor;
private Double preco;

public Livro() {
}

public Livro(String titulo, String autor, Double preco) {
this.titulo = titulo;
this.autor = autor;
this.preco = preco;
}

public Long getId() {
return id;
}

public void setId(Long id) {
this.id = id;
}

public String getTitulo() {
return titulo;
}

public void setTitulo(String titulo) {
this.titulo = titulo;
}

public String getAutor() {
return autor;
}

public void setAutor(String autor) {
this.autor = autor;
}

public Double getPreco() {
return preco;
}

public void setPreco(Double preco) {
this.preco = preco;
}
}

Depois (com Lombok):

package com.livraria.model;

import jakarta.persistence.*;
import lombok.*;

@Entity
@Table(name = "livros")
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@ToString
public class Livro {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

private String titulo;
private String autor;
private Double preco;
}

Explicação das Anotações Lombok:

  • @Getter → Gera automaticamente os métodos get.
  • @Setter → Gera automaticamente os métodos set.
  • @NoArgsConstructor → Cria um construtor vazio automaticamente.
  • @AllArgsConstructor → Cria um construtor com todos os atributos.
  • @ToString → Gera o método toString() automaticamente.

Agora, não precisamos mais escrever manualmente os getters, setters e construtores!

RecursoAntes (sem Lombok)Depois (com Lombok)
Getters e SettersCriados manualmente@Getter e @Setter
ConstrutoresCriados manualmente@NoArgsConstructor e @AllArgsConstructor
Injeção de dependência@Autowired no LivroService e LivroController@RequiredArgsConstructor + private final
Método toString()Criado manualmente@ToString

Conteúdos