
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étodotoString()
automaticamente.
Agora, não precisamos mais escrever manualmente os getters, setters e construtores!
Recurso | Antes (sem Lombok) | Depois (com Lombok) |
---|---|---|
Getters e Setters | Criados manualmente | @Getter e @Setter |
Construtores | Criados manualmente | @NoArgsConstructor e @AllArgsConstructor |
Injeção de dependência | @Autowired no LivroService e LivroController | @RequiredArgsConstructor + private final |
Método toString() | Criado manualmente | @ToString |