✨ Избавляемся от хардкода в 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)
👨💻 Джуниор
