Lombok

Проработать

  1. Библиотека Lombok
  2. Lombok @Log4j, @Slf4j and Other Log Annotations

Что это

Lombok - проект по добавлению дополнительной функциональности в Java c помощью изменения исходного кода перед Java компиляцией. При помощи аннотаций можно не писать часть кода.

Основные разделы

Основные аннотации

@Singular

Аннотация дополняющая Builder, применяется на поля типа Map, Set, List и позволяет в builder добавлять объекты по одному, а не списком.

Без @Singular

@Builder
public class Person {
    String name;
    List<String> cars;
}

Person person = Person.builder()
        .name("A")
        .cars(Arrays.asList("fictional", "incidental"))
        .build();
        

С @Singular

@Builder
public class Person {
    String name;
    @Singular
    List<String> cars;
}

Person person = Person.builder()
        .name("A")
        .car("carA")
        .car("carB")
        .build();
        

@SneakyThrows

Аннотация оборачивает выбрасываемые исключения в RuntimeException, что позволяет избежать необходимости объявления исключений в сигнатуре метода(throws) или использования блоков try-catch.

import lombok.SneakyThrows;

@SneakyThrows
public void someMethod() {
    // код, который может бросить IOException
}
        

@Jacksonized

Автоматически добавляет поддержку Jackson'а к сгенерированным Lombok'ом объектам, особенно полезна для иммутабельных классов (например, с использованием @Builder и @Value).

import lombok.Value;
import lombok.Builder;
import lombok.extern.jackson.Jacksonized;

@Value
@Builder
@Jacksonized
public class Person {
    String name;
    int age;
}
        

Без @Jacksonized Jackson не сможет корректно десериализовать JSON в этот класс, потому что у него нет конструктора по умолчанию, а поля final. @Jacksonized добавляет нужные аннотации и конфигурацию, чтобы Jackson понимал, как использовать builder для десериализации.

Что делает аннотация:

Когда использовать:

Подключение к Spring Boot + Gradle

Узнать последнюю версию в:

https://mvnrepository.com/artifact/org.projectlombok/lombok

build.gradle

def lombokVersion = '1.18.36'

//dependency
//Lombok
compileOnly "org.projectlombok:lombok:${lombokVersion}"
annotationProcessor "org.projectlombok:lombok:${lombokVersion}"
        

Установить Idea Plugin

Lombok