1. Введение
Lombok, остров в Индонезии, Ломбок. Но в мире Java это удобная библиотека классов, которая может обеспечить много удобства, поэтому многие люди предпочитают ее. Но есть и много возражений. Почему это?
прежде чем龙目岛Выстрел заката.
2 Удобства, предоставляемые Ломбоком
Обычно мы используем в JavaPOJOЛегко думать об этом.Lombok,какVO,DTO,DOЖдать. использоватьLombokВам нужно установить плагин для соответствующей IDE, и вам нужно ввести зависимости:
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.10</version>
<scope>provided</scope>
</dependency>
Например, если нетLombok,выполнитьgetter/setter,equals,hashCode,toStringОбъем кода очень большой и выглядит так:
package com.pkslow.basic.lombok;
import java.util.Objects;
public class Book {
private String name;
private int id;
private double price;
private String author;
private String desc;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Book book = (Book) o;
return id == book.id &&
Double.compare(book.price, price) == 0 &&
Objects.equals(name, book.name) &&
Objects.equals(author, book.author) &&
Objects.equals(desc, book.desc);
}
@Override
public int hashCode() {
return Objects.hash(name, id, price, author, desc);
}
@Override
public String toString() {
return "Book{" +
"name='" + name + '\'' +
", id=" + id +
", price=" + price +
", author='" + author + '\'' +
", desc='" + desc + '\'' +
'}';
}
}
И это в основном шаблонный код без особой логики.
При использованииLombokочень просто, записка@DataВы можете заполнить вышеупомянутую работу (вы можете отобразить правильный метод после установки плагина Lombok):
LombokОбщие аннотации:
@NonNull: используется для обнаружения аномалии нулевого указателя;
@Cleanup: Автоматическое закрытие ресурса;
@Getter/@Setter: автоматически генерируетсяget/setметод;
@ToString:генерироватьtoStringметод, который удобен для печати и отладки;
@EqualsAndHashCode:генерироватьequalsиhashCodeметод, обратите внимание, что эти два должны быть реализованы одновременно;
@NoArgsConstructor, @RequiredArgsConstructor and @AllArgsConstructor: Метод строительства;
@Data: эквивалентно@ToString+ @EqualsAndHashCode+@Getter+ @Setter +@RequiredArgsConstructor.
@Builder: Генерировать метод строителя;
@Log:связанный журнал:
@CommonsLog:org.apache.commons.logging.LogFactory.getLog(LogExample.class);
@Flogger:com.google.common.flogger.FluentLogger.forEnclosingClass();
@JBossLog:org.jboss.logging.Logger.getLogger(LogExample.class);
@Log:java.util.logging.Logger.getLogger(LogExample.class.getName());
@Log4j:org.apache.log4j.Logger.getLogger(LogExample.class);
@Log4j2:org.apache.logging.log4j.LogManager.getLogger(LogExample.class);
@Slf4j:org.slf4j.LoggerFactory.getLogger(LogExample.class);
@XSlf4j:org.slf4j.ext.XLoggerFactory.getXLogger(LogExample.class);
@CustomLog:com.foo.your.LoggerFactory.createYourLogger(LogExample.class);
такLombokЭто действительно может принести нам большое удобство, сократив количество повторяющегося и не относящегося к бизнес-логике кода, и код будет относительно чистым; изменение имени поля не требует многократных модификаций; повышение эффективности разработки.
3 проблемы с Ломбоком
Конечно, есть и люди, у которых другое мнение:
Нет конкретного кода при отладке, что неудобно для отладки;
Нужно заставить других устанавливать сторонние плагины, иначе будет отображаться ошибка;
При инспекционном тестовом покрытии, которое не может быть визуально отображено, код был покрыт и раскрыт;
не может быть достигнуто в соответствии с собственными желаниями, такими какtoStringметод, иногда нужно выводить разныеStringформате, не обязательноLombokреализация;
Для некоторых общих методов IDE уже может генерировать их автоматически, нет необходимостиLombokКак можно эффективно развиваться.
IDEA не предоставляетBuilder, но его можно использовать, установив плагин.
После успешной установки можно сгенерировать код Builder:
4 Резюме
Сначала я поддерживал использованиеLombok, После периода времени после использования и были некоторые проблемы, я все еще думаю, что код автоматически генерируется IDE более подходящим. Ведь обязательная установка плагинов, которые для кого-то слишком брутальны, но за счёт сгенерированного IDEA кода, другим не установить плагин не дадут.
Кроме того, еще несколько строк кода также могут отражать рабочую нагрузку, хахахахаха ...
Добро пожаловать в гостиТыквенный медленный разговор www.pkslow.comПолучайте больше отличных статей!
Добро пожаловать в публичный аккаунт WeChatТыква медленный разговор>, буду обновлять для вас...
Читайте больше, делитесь больше, пишите больше, организуйте больше.