Introduction
lombok est un plug-in au niveau de la compilation qui peut générer du code lorsque le projet est compilé. Par exemple, pendant le développement quotidien, un grand nombre de fichiers JavaBean doivent être produits. Chaque JavaBean doit fournir un grand nombre de méthodes get et set . S'il y a de nombreux champs et changements, il est relativement lourd à modifier. Le lombok correspondant peut nous éviter la difficulté de créer manuellement getter et des méthodes setter via des annotations (@getter,@setter) . Il peut générer automatiquement des méthodes getter et setter lorsque nous compilons le code source.
Autrement dit, l'effet qu'il peut réaliser est: il n'y a pas de méthodes getter et setter dans le code source, mais il existe des méthodes getter et setter dans le fichier bytecode compilé.
De plus, pendant la phase de développement du projet, les propriétés d'une class changent constamment. Un champ peut être ajouté aujourd'hui et un champ peut être supprimé demain. Chaque modification nécessite de modifier le code de modèle correspondant. De plus, certaines class ont tellement de champs qu’ils ne peuvent pas terminer à première vue. Si vous ajoutez du code de modèle, il est encore plus difficile de voir en un coup d'œil. De plus, car il y a trop de champs, je veux utiliser builder pour le créer. La création manuelle builder et des champs est mélangé à la classe originale, qui semble désordonnée. @Builder de lombok peut résoudre ce problème.
Adresse officielle du site Web: https://projectlombok.org/
Lombok Numéro de version du dernier: http://jcenter.bintray.com/org/projectlombok/lombok/
Document officiel: https://projectlombok.org/features/all
Lombok Annotation Introduction: https://www.vevb.com/article/151363.htm
Installez le plugin Lombok
Ajouter le support d'annotation
Ajouter des dépendances
BuildScript {ext {SpringbootVersion = '2.0.2.Release'} Repositories {mavencentral ()} dépendances {classPath ("org.springframework.boot: printemps-boot-gradle-Plugin: $ {Springbootversion}")}} Plugin: 'java'apply plugly:' 'org.springframework.boot'Apply Plugin:' io.spring.dependency-management 'groupe =' com.yanjun'version = '0.0.1-snapshot'sourcecompatibilité = 1.8Repositories {mavencentral ()} Spring-starter', Org.springframework.boot: Spring-boot-starter, 'Org.Spring 'org.springframework.boot: printemps-boot-starter-web',) // ajouter la compilation de dépendance Lombok 'org.projectlombok: Lombok: 1.18.0'}Annotations communes
@Nonnull Query Traitement vide
package com.yanjun.mybatis.bean; import lombok.data; import lombok.noargsconstructor; import lombok.nonnull; @ data @ noargsconstructorpublic class utilisateur {public entier Âge; @Nonnull Nom de la chaîne publique;}Équivalent à
package com.yanjun.mybatis.bean; import lombok.nonnull; public class user {public Integer Age; @Nonnull Nom de la chaîne publique; public Integer Getage () {return this.age; } @Nonnull public String getName () {return this.name; } public void Setage (entier Âge) {this.age = age; } public void setName (@Nonnull String name) {if (name == null) {throw new nullpointerException ("name est marqué @nonnull mais est null"); } else {this.name = name; }}}test
User user = new User (); user.setName (null);
Effet
Exception dans Thread "Main" java.lang.nullpointerException: le nom est marqué @nonnull mais est nul
sur com.yanjun.mybatis.bean.user.setname (user.java:7)
sur com.yanjun.mybatis.lombokapplication.main (lombokapplication.java:15)
@Data fournit des méthodes Get and Set
package com.yanjun.mybatis.bean; Importer Lombok.Data; @data // générer automatiquement les méthodes GET et définir des méthodes de classe publique User {Integer ID; Nom de chaîne; Âge entier; public static void main (String [] args) {// Test Method user user = new User (); user.setName ("zhaoyanjun"); user.setAGE (20); user.setid (1); }}@ SLF4J Impression du journal
package com.yanjun.mybatis.bean; importer lombok.data; import lombok.extern.slf4j.slf4j; @data // générer automatiquement GET et définir des méthodes @ slf4j // Login Impression de classe publique User {INTER ID; Nom de chaîne; Âge entier; public static void main (String [] args) {user user = new user (); user.setName ("zhaoyanjun"); user.setAGE (20); user.setid (1); log.info ("login" + user.toString ()); }}Constructeur de paramètres complet @AlLargSconstructor
Package com.yanjun.mybatis.bean; importer Lombok.AllargStructoror; Importer Lombok.Data; Importer Lombok.extern.slf4j.slf4j; @data // générer automatiquement Get and Set Methods @AllargSconstructor // Générer automatiquement un paramètre complet @ slf4j // Autonctionnement de la liaison à un utilisateur de classe INTEGER; Nom de chaîne; Âge entier; public static void main (String [] args) {user user = new User (1, "zhaoyanjun", 20); log.info ("login" + user.toString ()); }}@ToString Générez automatiquement la méthode de toString
Package com.yanjun.mybatis.bean; importer Lombok.AllargSstructructor; Importer Lombok.Data; Importer Lombok.ToString; Importer Lombok.extern.Slf4j.slf4j; @data // Générer automatiquement GETAT et Set Methods @alLargSconstructor // Générer automatique @ToString (of = {"id", "Age"}) // TOSTRING () Méthode uniquement ID imprime, Nom Field public class user {Integer id; Nom de chaîne; Âge entier; public static void main (String [] args) {user user = new User (1, "zhaoyanjun", 20); log.info ("login" + user.toString ()); }}La méthode toString () exclut les champs
// exclure le champ @toString (exclude = {"name"}) // Dans la méthode toString (), le champ de nom ne participe pas à l'impression@Value est utilisé pour annoter les cours finaux
L'annotation @Value est similaire à @Data , la différence est qu'elle définira toutes les variables des membres comme modification private final par défaut et ne générera pas set .
package com.yanjun.mybatis.bean; import lombok.value; @valuepublic classe utilisateur {Integer id = 1; String name = "zhaoyanjun"; Âge entier = 3;}Code compilé
public final class utilisateur {privé entier final id = 1; name de chaîne finale privée = "zhaoyanjun"; Âge entier final privé = 3; public user () {} public Integer getID () {return this.id; } public String getName () {this.getClass (); retourner "zhaoyanjun"; } public Integer Getage () {return this.age; } // omettre un code ......}@Builder: Ajoutez un modèle de constructeur à la classe annotée
Importer Lombok.Builder; @BuilDerpublic Class User {public Integer ID; nom de chaîne publique; Âge entier public;}Équivalent au code suivant
package com.yanjun.mybatis.bean; public class user {public Integer id; nom de chaîne publique; Âge des entiers publics; User (ID INTER, nom de chaîne, âge entier) {this.id = id; this.name = name; this.age = âge; } public static user.userBuilder builder () {return new user.userBuilder (); } public static class userbuilder {private Integer id; nom de chaîne privé; Âge entier privé; Userbuilder () {} public user.userBuilder id (INGER ID) {this.id = id; retourner ceci; } public user.userBuilder name (String name) {this.name = name; retourner ceci; } public user.UserBuilder Age (entier Âge) {this.age = age; retourner ceci; } public user build () {return nouvel utilisateur (this.id, this.name, this.age); } public String toString () {return "user.userBuilder (id =" + this.id + ", name =" + this.name + ", age =" + this.age + ");}}}utiliser
UserBuilder User Userbuilder = user.Builder (); utilisateur utilisateur = userbuilder .age (10) .id (1) .name ("yanjun") .build (); system.out.println (":" + userbuilder.tostring ());@Synchronized: Ajoutez un verrou de synchronisation
package com.yanjun.mybatis.bean; import Lombok.Synchronized; User de classe publique {public entier de l'âge; nom de chaîne publique; // Méthode ordinaire, équivalente à l'objet Lock @Synchronized int run1 () {return 1; } // Méthode statique, équivalente à class Lock @Synchronized static int run2 () {return 2; }}L'effet du code équivaut à
classe publique User {private final objet $ lock = nouvel objet [0]; objet final statique privé $ lock = nouvel objet [0]; Âge des entiers publics; nom de chaîne publique; public user () {} int run1 () {objet var1 = this. $ lock; synchronisé (this. $ Lock) {return 1; }} static int run2 () {objet var0 = $ lock; synchronisé ($ lock) {return 2; }}}Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.