2.2. Lombok
Lombok ist eine Java-Bibliothek, die Entwickler dabei unterstützt, Boilerplate-Code deutlich zu reduzieren. Durch einfache Annotationen können Getter, Setter, Konstruktoren und weitere Standardmethoden automatisch generiert werden.
Um Lombok in einem Maven-Projekt zu verwenden:
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.36</version>
<scope>provided</scope>
</dependency>
</dependencies>
Generiert automatisch Getter und Setter.
@Getter @Setter
private String name;
Generiert automatisch Konstruktoren ohne oder mit allen Argumenten.
@NoArgsConstructor
@AllArgsConstructor
public class Person {
private String name;
private int age;
}
Erstellt einen Konstruktor mit allen als final oder mit @NonNull annotierten Feldern.
@RequiredArgsConstructor
public class Person {
private final String name;
private int age;
}
Kombiniert @Getter, @Setter, @ToString, @EqualsAndHashCode und @RequiredArgsConstructor.
@Data
public class Person {
private final String name;
private int age;
}
Erstellt ein Builder-Pattern für die Klasse.
@Builder
public class Person {
private String name;
private int age;
}
// Nutzung
Person p = Person.builder().name("Max").age(30).build();
Die Version 1.18.36 war zum Zeitpunkt des Schreibens aktuell (Stand 2026-09). Lombok muss in der IDE als Annotation Processor aktiv sein, sonst sieht der Compiler die generierten Methoden nicht.
Für unveränderliche Datenklassen sind Java-Records (final ab 16) oft klarer als @Data:
public record Person(String name, int age) {}
Records liefern Konstruktor, Accessors, equals, hashCode und toString ohne Zusatzbibliothek. @Data bleibt sinnvoll, wenn Setter, Vererbung oder ein mutierbares JavaBean-Muster gebraucht werden.
Einige Lombok-Annotations sollten eher vermieden werden, da moderne Java-Alternativen existieren, die klarer, sicherer oder performanter sind:
- @SneakyThrows: Versteckt geprüfte Exceptions. Besser: Explizite Fehlerbehandlung nutzen.
- @Cleanup: Schließt Ressourcen automatisch. Besser: try-with-resources verwenden.
- @Synchronized: Ersetzt das native synchronized-Keyword. Besser: native Java-Synchronisierung nutzen.
Die Verwendung nativer Java-Alternativen ist in diesen Fällen meist transparenter und sicherer.