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