✨ Избавляемся от хардкода в Java-приложении с @FieldNameConstants
Если вы работали с JPA Criteria API, то вам точно приходилось хардкодить название полей:
public Specification<Car> where(@Nullable CarFilterDto carFilter) {
return (root, query, cb) -> cb.equal(root.get("type"), carFilter.getType());
}
В таких случаях, чтобы избавиться от хардкода, нужно написать константы с именами полей.
Вручную это делать долго, но оказывается, это умеет ломбок!
Вот так выглядит код с ломбоком:
@FieldNameConstants
public class FieldNameConstantsExample {
private final String iAmAField;
private final int andSoAmI;
@FieldNameConstants.Exclude private final int asAmI;
}
и вот во что он превратится:
public class FieldNameConstantsExample {
private final String iAmAField;
private final int andSoAmI;
private final int asAmI;
public static final class Fields {
public static final String iAmAField = "iAmAField";
public static final String andSoAmI = "andSoAmI";
}
}
Также, можно:
генерировать енам вместо констант
поменять название статического класса
поменять уровень доступа полей
генерировать только для явно включенных полей
@FieldNameConstants(asEnum = true,
innerTypeName = "StaticClassName",
level = lombok.AccessLevel.PRIVATE,
onlyExplicitlyIncluded = true)
👨💻 Джуниор