Mari Membahas Project Lombok

Assalamualaikum warahmatullahi wabarakatuh semoga kita dalam keadaan sehat selalu dan dimudahkan segala urusan dan kegiatan.

 

pada kesempatan kali ini, saya menulis tentang kenalan dengan lombok, kelebihan lombok, kapan kita harus make lombok dll.

 

mari kita nulis.. semoga bermanfaat.

 

Kenalan dengan Lombok

lombok adalah sebuah library / dependency yang membantu kita untuk mengurangi penulisan kode dan mempercepat kita dalam melakukan kegiatan coding.

 

Kenapa Kita perlu menggunakan project lombok?

Dalam memutuskan menggunakan sebuah library tentukan kita memerlukan pengetahuan kenapa kita harus menggunakan library tersebut dan kapan kita harus menggunakannya? sekarang kita akan membahas tentang kelebihan menggunakan project lombok.

  • Lombok Membuat Code lebih bersih

Dengan Menggunakan Lombok. Code kita akan terlihat lebih rapih tanpa menghilangan fungsional utamanya. misalnya. kalo kita tidak menggunakan project lombok. setiap kita membuat sebuah field. kita perlu melakukan generate setter, getter, dll secara manualy. bayangkan jika dalam 1 class terdapat 15 field misalnya, udah berapa baris code kita dalam 1 class doang? banyak wkwk. kalo make lombok kita tidak perlu melakukan hal itu. semuanya dilakukan dengan cukup menambahkan 1 annotations, apa itu? kita bahas dibawah ya :D

  • Lombok Gratis

Dengan Menggunakan Lombok, kita tidak perlu membayar support dan lain lain. open source bre. yang perlu dilakukan adalah cukup menambahkan dependency lombok di Maven (projectlombok.org) kita sudah dengan mudah untuk memanfaatkan fitur yang sangat epic untuk membantu mempercepat pengerjaan project kita .

  • Lombok Mempersingkat waktu kita .

Dengan Menggunakan lombok kita tidak perlu Generate Setter,Getter,toString etc , dengan lombok kita cukup menggunakan @Data sudah mencakup apa yang kita butuhkan diatas tanpa harus generate manualy. otomatis bre. apa kita harus menggunakanya? contohnya dalam project yang kita tangani. terdapat banyak sekali DTO(Data Transfer Object) dan class class. nah ini adalah waktu yang tepat untuk kita mempertimbangkan menggunakan lombok.

 

Kapan Kita Menggunakan Project Lombok?

  • Kita dapat mempertimbangkan menggunakan lombok ketika banyak sekali menggunakan POJO atau DTOS
  • Kita dapat mempertimbangkan dengan team annotation apa aja yang akan kita gunakan dan annotation apa yang tidak perlu kita gunakan bahkan hindari (komunikasi penting)
  • Kita dapat mempertimbangkan Readbility (mudah dibaca) dengan team ketika menggunakan project lombok dalam sebuah project.

masih banyak lagi alasan kenapa kita menggunakan project lombok. jadi . lakukan pemilihan dengan bijak sesuai dengan kebutuhan yang ingin digunakan.

 

Mari Membahas Annotation yang ada di project Lombok :D

Setelah kita mengetahui kenapa menggunakan lombok dan kapan menggunakan lombok, sekarang kita akan membahas annotation apa saja yang terdapat dalam project lombok. pemahaman atas penggunaan annotations ini akan sangat membantu kita dalam menggunakan project lombok.

kita akan memecah menjadi 3 bagian yaitu. lombok stable, experimental dan external lalu apa perbedaanya?

lombok stable dalam package ini terdapat annotation yang biasanya kita pakai untuk kebutuhan dalam penggunaan lombok dikegiatan sehari hari. untuk penggunaanya kita bisa pilih sesuai dengan kebutuhan

experimental dalam package ini hampir sama dengan lombok tetapi pada experimental ini terdapat banyak annotation yang belum mendukung sebagai first class feature. untuk pengguanya kita bisa pilih sesuai dengan kebutuhan

external dalam package ini terdapat external library/dependency yang dapat kita gunakan sesuai dengan kebutuhan.

 

LOMBOK STABLE

  • @Data

annotation ini sangat epik, cakep, mantep. wkwk . Dengan kita menambahkan annotation ini kita sama saja seperti menambahkan annotation @Getter, @Setter, @ToString, @EqualAndHashCode, @RequiredArgsConstructor .

  • @NoArgsConstructor

annotation ini akan mengenerate / membuat costructor kosongan atau tidak ada parameter didalamnya .

  • @AllArgsConstructor

annotation ini akan mengenerate / membuat constructor dengan parameter sesuai dengan banyaknya field yang terdapat di class tersebut .

  • @RequiredArgsConstructor

annotation ini akan mengenerate / membuat constructor dengan parameter yang sesuai dengan kebutuhan saja. biasanya ditandai dengan suatu field yang menggunakan final atau penggunaan annotation @NonNull.

  • @Setter

annotation ini kita gunakan agar field yang kita definisikan dibuatkan set field secara otomatis yang akan digenerate oleh annotation ini.

public void setAddress(String address) {
    this.address = address;
}
  • @Getter

annotation ini kita gunakan agar field yang kita definisikan dibuatkan get field secara otomatis yang akan digenerate oleh annotation ini.

public String getAddress() {
    return address;
}

@ToString

annotation ini kita gunakan agar field yang kita definisikan dibuatkan ToString biasanya yang akan digenerate sebagai toString semua fields yang ada didalam class tetapi kita juga bisa memilih field mana aja yang akan digenerate sebagai toString fitur ini akan kita bisa gunakan ketika menggunakan annotation ini.

@Override
public String toString() {
    return "Mahasiswa{" +
            "address='" + address + '\'' +
            '}';
}

@EqualAndHashCode

annotation ini kita gunakan agar field yang kita definisikan dibuatkan equals dan hashCode dalam annotation ini kita juga dapat memilih field mana aja yang di generate .

@Override
public boolean equals(Object o) {
    if (this == o) return true;
    if (o == null || getClass() != o.getClass()) return false;
    Mahasiswa mahasiswa = (Mahasiswa) o;
    return address.equals(mahasiswa.address);
}

@Override
public int hashCode() {
    return Objects.hash(address);
}

@Builder

 annotation bawaan lombok yang kita gunakan untuk mempersingkat code kita. dengan mempermudah pemanggilan field yang ada diclass yang terdapat annotation ini .

@NonNull

annotation ini kita gunakan didalam sebuah field, yang akan menambahkan secara otomatis null check atau field ini tidak boleh kosong. jika field yang terdapat annotation ini tidak dimasukan sebuah nilai, maka. akan memunculkan sebuah NullPointerException.

@With

annotation ini akan melakukan sebuah generate method yang akan mencopy sebuah object didalam field yang menggunakan annotation ini.

@Value

annotation ini sebagai immutable variant dari @Data, semua fields secara default menggunakan access modifier private, final dan setter tidak digenerate otomatis .

@SneakyThrows

annotation ini kita gunakan untuk menambahkan metode untuk melakukan pengecekan throws exception . biasnya method ini diletakan pada sebuah method. yang menerapkan exception didalamnya.

@Synchronized

annotation ini kita gunakan pada sebuah method yang berfungsi untuk melakukan sebuah Synchronized method.

 

EXPERIMENTAL

pada pembahasan kali ini, saya sedikit memisah terkait status dari annotation yang ditulis, annotation yang saat ini ditulis. by default dari dokumentasinya berstatus netral dan baik .

  • @Accessors (netral)
  • @FieldDefaults (positive)
  • @UtilityClass (positive)
  • @FieldNameConstant (netral)
  • @SuperBuilder (mantap)
  • @Jacksonized (mantap)
 

extern

library extends ini berisi berbagai macam model penggunaan Logger, dari berbagai macam external library lombok . berikut beberapa Logger yang bisa kita gunakan..

@CommonsLog

contoh penggunaan Logging mengunakan extern CommonsLog

private static final org.apache.commons.logging.Log log = org.apache.commons.logging.LogFactory.getLog(LogExample.class);

@Flogger

contoh penggunaan Logging mengunakan extern CommonsLog

 private static final com.google.common.flogger.FluentLogger log = com.google.common.flogger.FluentLogger.forEnclosingClass();

@JBossLog

contoh penggunaan Logging menggunakan extern JbosLog

private static final org.jboss.logging.Logger log = org.jboss.logging.Logger.getLogger(LogExample.class);

@Log

contoh penggunaan Logging menggunakan extern Log

private static final java.util.logging.Logger log = java.util.logging.Logger.getLogger(LogExample.class.getName());

@Log4j

contoh penggunaan Logging menggunakan extern Log4j

private static final org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(LogExample.class);

@Log4j2

contoh penggunaan Logging menggunakan extern Log4j2

private static final org.apache.logging.log4j.Logger log = org.apache.logging.log4j.LogManager.getLogger(LogExample.class);

@Slf4j

contoh penggunaan Logging menggunakan extern Slf4j

private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(LogExample.class);

@XSlf4j

contoh penggunaan Logging menggunakan extern XSlf4j

private static final org.slf4j.ext.XLogger log = org.slf4j.ext.XLoggerFactory.getXLogger(LogExample.class);

@CustomLog

contoh penggunaan Logging menggunakan extern CostumLog

private static final com.foo.your.Logger log = com.foo.your.LoggerFactory.createYourLogger(LogExample.class);

untuk menggunakan @CostumLog kita perlu menambahkan konfigurasi di lombok.config apa saja yang bisa dilakukan oleh @CostumLog yang kita buat

saya sendiri sering menggunakan @Slf4j untuk melakukan aktifivas Log.

yuk mari gunakan annotation ini dengan bijak dan sesuai dengan kebutuhan kita ya.

 

PENUTUP

project lombok memang sangat membantu kita dalam melakukan aktifivitas code . membuat code lebih rapih dll.

semoga tulisan saya bermanfaat.

kurang lebihnya mohon maaf. assalamualaikum warahmatullahi wabarakatuh.

 

Source : link