Perkenalan
lombok adalah plug-in tingkat kompilasi yang dapat menghasilkan beberapa kode saat proyek dikompilasi. Misalnya, selama pengembangan harian, sejumlah besar file JavaBean perlu diproduksi. Setiap JavaBean perlu menyediakan sejumlah besar metode get dan set . Jika ada banyak bidang dan perubahan, itu relatif rumit untuk dimodifikasi. lombok yang sesuai dapat menyelamatkan kita dari kesulitan membuat metode getter dan setter secara manual melalui anotasi (@getter,@setter) . Ini dapat secara otomatis menghasilkan metode getter dan setter ketika kami mengkompilasi kode sumber.
Artinya, efek yang dapat dicapai adalah: tidak ada metode getter dan setter dalam kode sumber, tetapi ada metode getter dan setter dalam file bytecode yang dikompilasi.
Selain itu, selama tahap pengembangan proyek, sifat -sifat class terus berubah. Bidang dapat ditambahkan hari ini, dan sebuah bidang dapat dihapus besok. Setiap perubahan membutuhkan pengubah kode template yang sesuai. Selain itu, beberapa class memiliki begitu banyak bidang yang tidak dapat mereka selesaikan pada pandangan pertama. Jika Anda menambahkan kode template, bahkan lebih sulit untuk dilihat. Terlebih lagi, karena ada terlalu banyak bidang, saya ingin menggunakan builder untuk membuatnya. builder dan ladang secara manual dicampur dengan kelas asli, yang terlihat berantakan. @Builder lombok dapat menyelesaikan masalah ini.
Alamat situs web resmi: https://projectlombok.org/
Lombok Nomor Versi Terbaru: http://jcenter.bintray.com/org/projectlombok/lombok/
Dokumen Resmi: https://projectlombok.org/features/all
Lombok Anotasi Pendahuluan: https://www.vevb.com/article/151363.htm
Pasang plugin Lombok
Tambahkan dukungan anotasi
Tambahkan dependensi
BuildScript {ext {springbootversion = '2.0.2.release'} repositori {mavencentral ()} dependensi {classPath ("org.springframework.boot: plugin-boot-plugin: $ {springbootversion}")}} plugin: ' 'org.springframework.boot'Apply plugin:' io.spring.dependency-management 'group =' com.yanjun'version = '0.0.1-Snapshot'Sourcecompatibility = 1.8Repositories {Mavencentral ()} dependencies {' org. 'org.springframework.boot: spring-boot-starter-web',) // tambahkan kompilasi dependensi lombok 'org.projectlombok: lombok: 1.18.0'}Anotasi Umum
@Nonnull kueri pemrosesan kosong
Paket com.yanjun.mybatis.bean; import lombok.data; import lombok.noargsconstructor; import lombok.nonnull;@data@noargsconstructorpublic kelas kelas {usia integer publik; @Nonnull nama string publik;}Setara dengan
paket com.yanjun.mybatis.bean; import lombok.nonnull; pengguna kelas publik {usia integer publik; @Nonnull nama string publik; Public Integer getage () {return this.age; } @Nonnull public string getName () {return this.name; } public void setage (usia integer) {this.age = usia; } public void setName (@nonnull name string) {if (name == null) {throw new nullpointerException ("name ditandai @nonnull tetapi null"); } else {this.name = name; }}}tes
Pengguna pengguna = pengguna baru (); user.setname (null);
Memengaruhi
Pengecualian di Thread "Main" java.lang.nullpointerException: Nama ditandai @nonnull tetapi nol
di com.yanjun.mybatis.bean.user.setname (user.java:7)
di com.yanjun.mybatis.lombokapplication.main (lombokapplication.java:15)
@Data menyediakan metode Get and Set
Paket com.yanjun.mybatis.bean; import lombok.data; @data // secara otomatis menghasilkan dan mengatur metode pengguna kelas publik {integer id; Nama string; Usia bilangan bulat; public static void main (String [] args) {// Metode tes pengguna pengguna = pengguna baru (); user.setname ("Zhaoyanjun"); user.setage (20); user.setid (1); }}@Slf4j log pencetakan
Paket com.yanjun.mybatis.bean; import lombok.data; import lombok.extern.slf4j.slf4j; @data // secara otomatis menghasilkan metode get and atur @slf4j // login pencetakan pengguna kelas publik {integer id; Nama string; Usia bilangan bulat; public static void main (string [] args) {user user = new user (); user.setname ("Zhaoyanjun"); user.setage (20); user.setid (1); log.info ("login" + user.toString ()); }}@Allargsconstructor konstruktor parameter penuh
Paket com.yanjun.mybatis.bean; import lombok.allargsconstructor; import lombok.data; import lombok.extern.slf4j.slf4j; @data // secara otomatis menghasilkan metode get dan atur @allArgsconstructor // secara otomatis menghasilkan konstruk parameter penuh @slf slfor4 Nama string; Usia bilangan bulat; public static void main (string [] args) {user user = pengguna baru (1, "zhaoyanjun", 20); log.info ("login" + user.toString ()); }}@ToString secara otomatis menghasilkan metode tostring
Paket com.yanjun.mybatis.bean; import lombok.allargsconstructor; import lombok.data; import lombok.tostring; import lombok.extern.slf4j.slf4j; @data // konstruksi otomatis get dan set metode @allargsconstructor /paaman secara otomatis /friel fulh4 secara otomatis @allargsconstructor /fullata secara otomatis /fullicory secara otomatis @allargsconstructor @data secara otomatis @ToString (dari = {"id", "Age"}) // metode ToString () hanya mencetak ID, nama bidang Public Class Public {Integer ID; Nama string; Usia bilangan bulat; public static void main (string [] args) {user user = pengguna baru (1, "zhaoyanjun", 20); log.info ("login" + user.toString ()); }}metode tostring () tidak termasuk bidang
// Kecualikan bidang @ToString (tidak termasuk = {"name"}) // dalam metode ToString (), bidang nama tidak berpartisipasi dalam pencetakan@Value digunakan untuk memberi anotasi kelas akhir
Anotasi @Value mirip dengan @Data , perbedaannya adalah bahwa ia akan mendefinisikan semua variabel anggota sebagai modifikasi private final secara default dan tidak akan menghasilkan metode set .
Paket com.yanjun.mybatis.bean; import lombok.value; @valuepublic class user {integer id = 1; String name = "zhaoyanjun"; Usia bilangan bulat = 3;}Kode yang dikumpulkan
Pengguna Kelas Akhir Publik {Private Final Integer ID = 1; Private Final String Name = "Zhaoyanjun"; Usia bilangan bulat akhir pribadi = 3; pengguna publik () {} integer publik getId () {return this.id; } public string getName () {this.getClass (); kembali "Zhaoyanjun"; } getage integer publik () {return this.age; } // hilangkan beberapa kode ......}@Builder: Tambahkan pola konstruktor ke kelas beranotasi
impor lombok.builder; @builderpublic kelas pengguna {public integer ID; nama string publik; usia bilangan bulat publik;}Setara dengan kode berikut
paket com.yanjun.mybatis.bean; pengguna kelas publik {ID integer publik; nama string publik; usia bilangan bulat publik; Pengguna (ID integer, nama string, usia integer) {this.id = id; this.name = name; this.age = usia; } public static user.userbuilder builder () {return new user.userbuilder (); } public static class userBuilder {private integer ID; nama string pribadi; usia bilangan bulat pribadi; Userbuilder () {} public user.userbuilder id (integer id) {this.id = id; kembalikan ini; } name User.UserBuilder publik (nama string) {this.name = name; kembalikan ini; } USER.USERBUILDER UMUM PUBLIK (usia integer) {this.age = usia; kembalikan ini; } Public User build () {return baru pengguna (this.id, this.name, this.age); } public string toString () {return "user.userbuilder (id =" + this.id + ", name =" + this.name + ", usia =" + this.age + ");}}}}menggunakan
Userbuilder userbuilder = user.builder (); pengguna pengguna = userbuilder .age (10) .id (1) .name ("yanjun") .build (); System.out.println (":" + userbuilder.toString ());@Synchronized: Tambahkan kunci sinkronisasi
Paket com.yanjun.mybatis.bean; import lombok.synchronized; pengguna kelas publik {usia integer publik; nama string publik; // metode biasa, setara dengan kunci objek @synchronized int run1 () {return 1; } // metode statis, setara dengan kunci kelas @synchronized static int run2 () {return 2; }}Efek kode setara dengan
Pengguna kelas publik {Private Final Object $ lock = Objek baru [0]; objek akhir statis privat $ lock = objek baru [0]; usia bilangan bulat publik; nama string publik; pengguna publik () {} int run1 () {objek var1 = this. $ lock; disinkronkan (ini. $ lock) {return 1; }} static int run2 () {objek var0 = $ lock; disinkronkan ($ lock) {return 2; }}}Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.