Einführung
lombok ist ein Plug-in für Kompilierungsebene, mit dem beim Zusammenstellen des Projekts Code generiert werden kann. Zum Beispiel muss während der täglichen Entwicklung eine große Anzahl von JavaBean erstellt werden. Jedes JavaBean muss eine große Anzahl von get -and set -Methoden bereitstellen. Wenn es viele Felder und Änderungen gibt, ist es relativ umständlich zu ändern. Der entsprechende lombok kann uns die Mühe ersparen, über Anmerkungen (@getter,@setter) getter setter zu werden. Wenn wir den Quellcode kompilieren, können automatisch getter und setter -Methoden generiert werden.
Das heißt, der Effekt, den es erreichen kann, ist: Es gibt keine getter und setter -Methoden im Quellcode, aber in der kompilierten Bytecode -Datei befinden sich getter und setter -Methoden.
Darüber hinaus ändern sich während der Projektentwicklungsphase die Eigenschaften einer class ständig. Heute kann ein Feld hinzugefügt werden, und morgen kann ein Feld gelöscht werden. Für jede Änderung muss der entsprechende Vorlagencode geändert werden. Darüber hinaus haben einige class so viele Felder, dass sie auf den ersten Blick nicht beenden können. Wenn Sie Vorlagencode hinzufügen, ist es auf einen Blick noch schwieriger zu sehen. Darüber hinaus möchte ich builder verwenden, um es zu erstellen, denn es gibt zu viele Felder. Die manuelles Erstellen von builder und Feldern wird mit der Originalklasse gemischt, die chaotisch aussieht. lombok @Builder kann dieses Problem lösen.
Offizielle Website -Adresse: https://projectlombok.org/
Lombok Neueste Versionsnummer: http://jcenter.bintray.com/org/projectlombok/lombok/
Offizielles Dokument: https://projectlombok.org/features/all
Lombok Annotation Einführung: https://www.vevb.com/article/151363.htm
Installieren Sie das Lombok -Plugin
Annotationsunterstützung hinzufügen
Abhängigkeiten hinzufügen
Buildscript {ext {SpringBootversion = '2.0.2.Release'} Repositories {mavencentral ()} Abhängigkeiten {classpatple 'org.springFramework.boot'apply Plugin:' io.spring.dependency-Management 'Group =' com.yanjun'version = '0.0.1-Snapshot'SourceCompatibility = 1,8Repositories {mavencentral ()} abhängig: 'org.springFramework.boot: Spring-Boot-Starter-Web',) // Lombok-Abhängigkeitskompile 'org.projectlombok: lombok: 1.18.0'}Gemeinsame Anmerkungen
@Nonnull Abfrage leere Verarbeitung
Paket com.yanjun.mybatis.bean; import lombok.data; import lombok.noargSconstructor; import lombok.nonnull;@data@noargSconstructorPublic -Klasse {public Integer Age; @Nonnull public String Name;}Äquivalent zu
Paket com.yanjun.mybatis.bean; Import Lombok.nonnull; Benutzer der öffentlichen Klasse {Public Integer Age; @Nonnull öffentlicher String -Name; public Ganzzahl getage () {return this.age; } @Nonnull public String getName () {return this.name; } public void setage (Ganzzahl älter) {this.age = älter; } public void setName (@nonnull String -Name) {if (name == null) {neue nullPointerexception werfen ("Name ist @nonnull markiert, aber null"); } else {this.name = name; }}}prüfen
User user = new user (); user.setName (null);
Wirkung
Ausnahme im Thread "Haupt" java.lang.nullpointerexception: Name ist @nonnull markiert, aber null ist null
bei com.yanjun.mybatis.bean.user.setname (user.java:7)
bei com.yanjun.mybatis.lombokapplication.main (lombokapplication.java:15)
@Data bietet Get and Set -Methoden
Paket com.yanjun.mybatis.bean; import lombok.data; @data // automatisch generieren und Methoden für öffentliche Klasse -Benutzer {Integer id; Zeichenfolge Name; Ganzzahlalter; public static void main (String [] args) {// Testmethode user = new user (); user.setName ("zhaoyanjun"); user.Setage (20); user.setId (1); }}@SLF4J -Protokolldruck
Paket com.yanjun.mybatis.bean; import lombok.data; import lombok.extern.slf4j.slf4j; @data // automatisch generieren und setze methodien @slf4j // Login -Druck der öffentlichen Klassen Benutzer {Integer ID; Zeichenfolge Name; Ganzzahlalter; 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 Full Parameter Constructor
paket com.yanjun.mybatis.bean; import lombok.allargSconstructor; import lombok.data; import lombok.extern.slf4j.slf4j; @data // automatisch erzeugen und setze methodien @allargScontens. Zeichenfolge Name; Ganzzahlalter; public static void main (String [] args) {user user = new user (1, "zhaoyanjun", 20); log.info ("login" + user.toString ()); }}@ToString generieren automatisch die ToString -Methode
package com.yanjun.mybatis.bean;import lombok.AllArgsConstructor;import lombok.Data;import lombok.ToString;import lombok.extern.slf4j.Slf4j;@Data //Automatically generate get and set methods @AllArgsConstructor //Automatically generate full parameter constructor @Slf4j //Login print @ToString (von = {"ID", "Alter"}) // toString () druckt nur ID, Name des Namens der öffentlichen Klasse Benutzer {Integer id; Zeichenfolge Name; Ganzzahlalter; public static void main (String [] args) {user user = new user (1, "zhaoyanjun", 20); log.info ("login" + user.toString ()); }}Die Methode toString () schließt Felder aus
// Das Feld @toString (exklued = {"name"}) // In der Methode toString () nimmt das Feld Name nicht am Drucken teil@Value wird verwendet, um die endgültigen Klassen zu kommentieren
Die @Value -Annotation ähnelt @Data . Der Unterschied besteht darin, dass sie standardmäßig alle Mitgliedsvariablen als private final Änderung definiert und keine set Methode generiert.
Paket com.yanjun.mybatis.bean; import lombok.value; @valuepublic class User {Integer id = 1; String name = "Zhaoyanjun"; Ganzzahlalter = 3;}Zusammengestelltes Code
public Final Class User {private Finale Integer ID = 1; private endgültige String name = "Zhaoyanjun"; privates Final Ganzzahlalter = 3; public user () {} public Integer getId () {return this.id; } public String getName () {this.getClass (); Rückkehr "Zhaoyanjun"; } public Integer getage () {return this.age; } // einen Code weglassen ......}@Builder: Fügen Sie der kommentierten Klasse ein Konstruktormuster hinzu
importieren lombok.builder; @BuilderPublic Class User {public Integer id; öffentlicher String -Name; öffentliches Ganzzahlalter;}Entspricht dem folgenden Code
Paket com.yanjun.mybatis.bean; Public Class User {public Integer id; öffentlicher String -Name; öffentliches Ganzzahlalter; Benutzer (Ganzzahl -ID, String -Name, ganzzahliger Alter) {this.id = id; this.name = name; this.age = Alter; } public static user.userBuilder builder () {neuer user.userBuilder (); } public static class UserBuilder {private Integer id; privater Zeichenfolge Name; privates Ganzzahlalter; UserBuilder () {} public user.userBuilder id (Integer id) {this.id = id; gib dies zurück; } public user.userBuilder name (String -Name) {this.name = name; gib dies zurück; } public user.userBuilder ay (Ganzzahl alter) {this.age = älter; gib dies zurück; } public user Build () {neuer Benutzer zurückgeben (this.id, this.name, this.age); } public String toString () {return "user.userBuilder (id =" + this.id + ", name =" + this.name + ", ay" + this.age + ");}}}verwenden
UserBuilder userBuilder = user.builder (); user user = userBuilder .age (10) .id (1) .name ("yanjun") .build (); System.out.println (":" + userBuilder.toString ());@Synchronized: Fügen Sie eine Synchronisationsschloss hinzu
Paket com.yanjun.mybatis.bean; import lombok.synchronized; public class user {public Ganzzahl Alter; öffentlicher String -Name; // Gewöhnliche Methode, gleichwertig wie Object Lock @synchronisierte int run1 () {return 1; } // statische Methode, äquivalent wie die Klassensperrung @synchronisierte statische int run2 () {return 2; }}Der Effekt des Code ist gleichwertig zu
Public Class User {privates endgültiges Objekt $ lock = New Object [0]; privates statisches endgültiges Objekt $ lock = neues Objekt [0]; öffentliches Ganzzahlalter; öffentlicher String -Name; public user () {} int run1 () {Object var1 = this. $ lock; synchronisiert (this. $ lock) {return 1; }} static int run2 () {Object var0 = $ lock; synchronisiert ($ lock) {return 2; }}}Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.