導入
lombok 、プロジェクトのコンパイル時にコードを生成できるコンピレーションレベルのプラグインです。たとえば、毎日の開発中に、多数のJavaBeanファイルを作成する必要があります。各JavaBean 、多数のgetおよびsetメソッドを提供する必要があります。多くのフィールドと変更がある場合、変更するのは比較的面倒です。対応するlombok 、注釈を通じて手動でgetterとsetterメソッドを作成するというトラブルを救うことができます(@getter,@setter) 。ソースコードをコンパイルすると、 getterとsetterメソッドを自動的に生成できます。
つまり、それが達成できる効果は、ソースコードにはgetterとsetterメソッドがありませんが、コンパイルされたバイトコードファイルにはgetterとsetterメソッドがあります。
さらに、プロジェクト開発段階では、 classの特性は常に変化しています。今日、フィールドが追加され、明日フィールドが削除される場合があります。各変更には、対応するテンプレートコードを変更する必要があります。さらに、一部のclassには非常に多くのフィールドがあるため、一目で終了できません。テンプレートコードを追加すると、一目で確認するのがさらに難しくなります。さらに、フィールドが多すぎるため、 builderを使用して作成したいと思います。 builderとフィールドを手動で作成するのは、乱雑に見える元のクラスと混合されています。 lombokの@Builderこの問題を解決できます。
公式ウェブサイトの住所:https://projectlombok.org/
Lombok最新バージョン番号:http://jcenter.bintray.com/org/projectlombok/lombok/
公式文書:https://projectlombok.org/features/all
Lombok Annotationはじめに:https://www.vevb.com/article/151363.htm
Lombokプラグインをインストールします
注釈のサポートを追加します
依存関係を追加します
buildscript {ext {springbootversion = '2.0.2.Release'}リポジトリ{mavencentral()}依存関係{classpath( "org.springframework.boot:spring-boot-gradle-plugin:$ {springbootversion}")}} 'org.springframework.boot'applyプラグイン:' io.spring.dependency-management 'group =' com.yanjun'version = '0.0.1-snapshot'sourcecopatibility = 1.8repositories {mavencentral()} depenties {compile('またはg.springframe-bot.bot.bot.bot.bot.bot.boot bot.botter 'org.springframework.boot:spring-boot-starter-web'、)// lombok依存関係コンパイル 'org.projectlombok:lombok:1.18.0'}一般的な注釈
@nonnull query空の処理
パッケージcom.yanjun.mybatis.bean; import lombok.data; import lombok.noargsconstructor; import lombok.nonnull;@data@noargsconstructorpublic class user {public Integer age; @nonnull public string name;}に相当
パッケージcom.yanjun.mybatis.bean; import lombok.nonnull; public class user {public Integer age; @nonnullパブリック文字列名; public Integer getage(){return this.age; } @nonnull public string getname(){return this.name; } public void Setage(整数年齢){this.age = age; } public void setName(@nonnull string name){if(name == null){throw nullpointerexception( "name is Marked @nonnull but is null"); } else {this.name = name; }}}テスト
user user = new user(); user.setname(null);
効果
スレッド「Main」Java.lang.nullpointerexception:名前は@nonnullとマークされていますが、nullです
com.yanjun.mybatis.bean.user.setname(user.java:7)
com.yanjun.mybatis.lombokapplication.main(lombokapplication.java:15)
@Dataは、GETおよびセットメソッドを提供します
パッケージcom.yanjun.mybatis.bean; import lombok.data; @data // get and setメソッドpublic classユーザー{integer id;文字列名;整数年齢; public static void main(string [] args){// test method user user = new user(); user.setname( "zhaoyanjun"); user.setage(20); user.setId(1); }}@slf4jログ印刷
パッケージcom.yanjun.mybatis.bean; import lombok.data; import lombok.extern.slf4j.slf4j; @data //自動的にGet and Set Methodを自動的に生成します @slf4j //ログイン印刷パブリッククラスユーザー{integer id;文字列名;整数年齢; 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フルパラメーターコンストラクター
パッケージcom.yanjun.mybatis.bean; import lombok.allargsconstructor; import lombok.data; import lombok.extern.slf4j.slf4j; @data //自動的に生成および設定@allargsconstuctor //フルパラメーター @slf4j // login login construstation @slf4j // login login construstation文字列名;整数年齢; public static void main(string [] args){user user = new user(1、 "zhaoyanjun"、20); log.info( "login" + user.toString()); }}@ToStringは、自動的にToStringメソッドを生成します
パッケージcom.yanjun.mybatis.bean; import lombok.allargsconstructor; import lombok.data; import lombok.data; import lombok.tostring; import lombok.extern.slf4j.slf4j; = {"id"、 "age"})// toString()メソッドはidのみを印刷します。文字列名;整数年齢; public static void main(string [] args){user user = new user(1、 "zhaoyanjun"、20); log.info( "login" + user.toString()); }}toString()メソッドはフィールドを除外します
// exclude field @tostring(explude = {"name"})// toString()メソッドでは、名前フィールドは印刷に参加しません@valueは、最終クラスの注釈に使用されます
@Valueアノテーションは@Dataに似ています。違いは、すべてのメンバー変数をデフォルトでprivate final変更として定義し、 setメソッドを生成しないことです。
パッケージcom.yanjun.mybatis.bean; import lombok.value; @valuepublic class user {integer id = 1;文字列名= "zhaoyanjun";整数年齢= 3;}コンパイルされたコード
パブリックファイナルクラスユーザー{プライベート最終整数ID = 1;プライベート最終文字列name = "zhaoyanjun";プライベート最終整数年齢= 3; public user(){} public Integer getId(){return this.id; } public string getName(){this.getClass(); 「Zhaoyanjun」を返します。 } public Integer getage(){return this.age; } //いくつかのコードを省略します......}@Builder:注釈付きクラスにコンストラクターパターンを追加します
Import Lombok.Builder; @builderpublic classユーザー{public Integer id;パブリック文字列名;公共の整数年齢;}次のコードに相当します
パッケージcom.yanjun.mybatis.bean; public class user {public Integer id;パブリック文字列名;公共の整数年齢; user(integer id、string name、integer age){this.id = id; this.name = name; this.age = age; } public static user.userbuilder builder(){return new user.userbuilder(); } public static class userbuilder {private integer id;プライベート文字列名;民間整数年齢; userbuilder(){} public user.userbuilder id(integer id){this.id = id;これを返します。 } public user.userbuilder name(string name){this.name = name;これを返します。 } public user.userbuilder age(整数年齢){this.age = age;これを返します。 } public user build(){return new user(this.id、this.name、this.age); } public string toString(){return "user.userbuilder(id =" + this.id + "、name =" + this.name + "、age =" + this.age + ")"; }}}使用
userbuilder userbuilder = user.builder(); user user = userbuilder .age(10).id(1).name( "yanjun").build(); system.out.println( ":" + userbuilder.tostring());
@SynChronized:同期ロックを追加します
パッケージcom.yanjun.mybatis.bean; import lombok.synchronized; public class user {public Integer age;パブリック文字列名; //通常の方法、オブジェクトロック@synchronized int run1(){return 1; } // staticメソッド、クラスロックに相当@synchronized static int run2(){return 2; }}コードの効果は同等です
パブリッククラスユーザー{プライベートファイナルオブジェクト$ lock = new Object [0];プライベート静的最終オブジェクト$ lock = new Object [0];公共の整数年齢;パブリック文字列名; public user(){} int run1(){object var1 = this。$ lock;同期(this。$ lock){return 1; }} static int run2(){object var0 = $ lock;同期($ lock){return 2; }}}上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。