1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時間:8:30-17:00
      你可能遇到了下面的問題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
      Lombok怎么在SpringBoot2.x中使用

      Lombok怎么在SpringBoot 2.x中使用?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。

      彰武網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、自適應(yīng)網(wǎng)站建設(shè)等網(wǎng)站項目制作,到程序開發(fā),運(yùn)營維護(hù)。創(chuàng)新互聯(lián)于2013年創(chuàng)立到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運(yùn)維經(jīng)驗,來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)。

      lombok是一個編譯級別的插件,它可以在項目編譯的時候生成一些代碼。比如日常開發(fā)過程中需要生產(chǎn)大量的JavaBean文件,每個JavaBean都需要提供大量的getset方法,如果字段較多且發(fā)生變動的話修改起來相對繁瑣,相應(yīng)的lombok可以通過注解(@getter,@setter)為我們省去手動創(chuàng)建gettersetter方法的麻煩,它能夠在我們編譯源碼的時候自動幫我們生成gettersetter方法。

      即它最終能夠達(dá)到的效果是:在源碼中沒有gettersetter方法,但是在編譯生成的字節(jié)碼文件中有gettersetter方法。

      安裝 lombok 插件

      Lombok怎么在SpringBoot 2.x中使用

      添加注解支持

      Lombok怎么在SpringBoot 2.x中使用

      添加依賴

      buildscript {
       ext {
        springBootVersion = '2.0.2.RELEASE'
       }
       repositories {
        mavenCentral()
       }
       dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
       }
      }
      
      apply plugin: 'java'
      apply plugin: 'eclipse'
      apply plugin: 'org.springframework.boot'
      apply plugin: 'io.spring.dependency-management'
      
      group = 'com.yanjun'
      version = '0.0.1-SNAPSHOT'
      sourceCompatibility = 1.8
      
      repositories {
       mavenCentral()
      }
      
      
      dependencies {
       compile('org.springframework.boot:spring-boot-starter',
         'org.springframework.boot:spring-boot-starter-web',
       )
      
       //添加lombok依賴
       compile 'org.projectlombok:lombok:1.18.0'
      
      }

      常用注解

      • @Data 注解在類上;提供類所有屬性的 getting 和 setting 方法,此外還提供了equals、canEqual、hashCode、toString 方法

      • @Setter :注解在屬性上;為屬性提供 setting 方法

      • @Setter :注解在屬性上;為屬性提供 getting 方法

      • @Log4j :注解在類上;為類提供一個 屬性名為log 的 log4j 日志對象

      • @NoArgsConstructor :注解在類上;為類提供一個無參的構(gòu)造方法

      • @AllArgsConstructor :注解在類上;為類提供一個全參的構(gòu)造方法

      • @Cleanup : 可以關(guān)閉流

      • @Builder : 被注解的類加個構(gòu)造者模式

      • @Synchronized : 加個同步鎖

      • @SneakyThrows : 等同于try/catch 捕獲異常

      • @NonNull : 如果給參數(shù)加個這個注解 參數(shù)為null會拋出空指針異常

      • @Value : 注解和@Data類似,區(qū)別在于它會把所有成員變量默認(rèn)定義為private final修飾,并且不會生成set方法。

      @NonNull 判空處理

      package com.yanjun.mybatis.bean;
      
      import lombok.Data;
      import lombok.NoArgsConstructor;
      import lombok.NonNull;
      
      @Data
      @NoArgsConstructor
      public class User {
      
       public Integer age;
      
       @NonNull
       public String name;
      
      }

      相當(dāng)于

      package com.yanjun.mybatis.bean;
      
      import lombok.NonNull;
      
      public class User {
       public Integer age;
       @NonNull
       public String name;
      
       public Integer getAge() {
        return this.age;
       }
      
       @NonNull
       public String getName() {
        return this.name;
       }
      
       public void setAge(Integer age) {
        this.age = age;
       }
      
       public void setName(@NonNull String name) {
        if (name == null) {
         throw new NullPointerException("name is marked @NonNull but is null");
        } else {
         this.name = name;
        }
       }
      }

      測試

      User user = new User();
      user.setName(null);

      效果

      Exception in thread "main" java.lang.NullPointerException: name is marked @NonNull but is null
      at com.yanjun.mybatis.bean.User.setName(User.java:7)
      at com.yanjun.mybatis.LombokApplication.main(LombokApplication.java:15)

      @Data 提供 get、set 方法

      package com.yanjun.mybatis.bean;
      
      import lombok.Data;
      
      @Data //自動生成 get、set 方法
      public class User {
      
       Integer id;
      
       String name;
      
       Integer age;
      
      
       public static void main(String[] args) {
        //測試方法
        User user = new User();
        user.setName("zhaoyanjun");
        user.setAge(20);
        user.setId(1);
       }
      
      }

      @Slf4j 日志打印

      package com.yanjun.mybatis.bean;
      
      import lombok.Data;
      import lombok.extern.slf4j.Slf4j;
      
      @Data //自動生成 get、set 方法
      @Slf4j //日志打印
      public class User {
      
       Integer id;
      
       String name;
      
       Integer age;
      
       public static void main(String[] args) {
        User user = new User();
        user.setName("zhaoyanjun");
        user.setAge(20);
        user.setId(1);
      
        log.info("日志" + user.toString());
      
       }
      }

      @AllArgsConstructor 全參數(shù)構(gòu)造函數(shù)

      package com.yanjun.mybatis.bean;
      
      import lombok.AllArgsConstructor;
      import lombok.Data;
      import lombok.extern.slf4j.Slf4j;
      
      @Data //自動生成 get、set 方法
      @AllArgsConstructor //自動生成全參數(shù)構(gòu)造函數(shù)
      @Slf4j //日志打印
      public class User {
      
       Integer id;
      
       String name;
      
       Integer age;
      
       public static void main(String[] args) {
        User user = new User(1, "zhaoyanjun", 20);
      
        log.info("日志" + user.toString());
       }
      }

      @ToString 自動生成toString方法

      package com.yanjun.mybatis.bean;
      
      import lombok.AllArgsConstructor;
      import lombok.Data;
      import lombok.ToString;
      import lombok.extern.slf4j.Slf4j;
      
      @Data //自動生成 get、set 方法
      @AllArgsConstructor //自動生成全參數(shù)構(gòu)造函數(shù)
      @Slf4j //日志打印
      @ToString(of = {"id","age"}) //tostring() 方法里面只打印 id ,name 字段
      public class User {
      
       Integer id;
      
       String name;
      
       Integer age;
      
       public static void main(String[] args) {
        User user = new User(1, "zhaoyanjun", 20);
      
        log.info("日志" + user.toString());
       }
      }

      toString() 方法排除字段

      //排除字段
      @ToString(exclude = {"name"}) //tostring() 方法中,name 字段不參與打印

      @Value 用于注解final類

      @Value 注解和@Data類似,區(qū)別在于它會把所有成員變量默認(rèn)定義為 private final 修飾,并且不會生成set方法。

      package com.yanjun.mybatis.bean;
      import lombok.Value;
      
      @Value
      public class User {
      
       Integer id = 1;
      
       String name = "zhaoyanjun";
      
       Integer age = 3 ;
      }

      編譯后的代碼

      public final class User {
       private final Integer id = 1;
       private final String name = "zhaoyanjun";
       private final Integer age = 3;
      
       public User() {
       }
      
       public Integer getId() {
        return this.id;
       }
      
       public String getName() {
        this.getClass();
        return "zhaoyanjun";
       }
      
       public Integer getAge() {
        return this.age;
       }
      
       //省略部分代碼
       ......
      }

      @Builder : 被注解的類加個構(gòu)造者模式

      import lombok.Builder;
      
      @Builder
      public class User {
      
       public Integer id;
      
       public String name;
      
       public Integer age;
      }

      相當(dāng)于以下代碼

      package com.yanjun.mybatis.bean;
      
      public class User {
       public Integer id;
       public String name;
       public Integer age;
      
       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;
        private String name;
        private Integer age;
      
        UserBuilder() {
        }
      
        public User.UserBuilder id(Integer id) {
         this.id = id;
         return this;
        }
      
        public User.UserBuilder name(String name) {
         this.name = name;
         return this;
        }
      
        public User.UserBuilder age(Integer age) {
         this.age = age;
         return this;
        }
      
        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 : 加個同步鎖

      package com.yanjun.mybatis.bean;
      
      import lombok.Synchronized;
      
      public class User {
      
       public Integer age;
      
       public String name;
      
       //普通方法,相當(dāng)于對象鎖
       @Synchronized
       int run1() {
        return 1;
       }
      
       //靜態(tài)方法,相當(dāng)于類鎖
       @Synchronized
       static int run2() {
        return 2;
       }
      
      }

      代碼的效果相當(dāng)于

      public class User {
       private final Object $lock = new Object[0];
       private static final Object $LOCK = new Object[0];
       public Integer age;
       public String name;
      
       public User() {
       }
      
       int run1() {
        Object var1 = this.$lock;
        synchronized(this.$lock) {
         return 1;
        }
       }
      
       static int run2() {
        Object var0 = $LOCK;
        synchronized($LOCK) {
         return 2;
        }
       }
      }

      看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進(jìn)一步的了解或閱讀更多相關(guān)文章,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)的支持。


      當(dāng)前標(biāo)題:Lombok怎么在SpringBoot2.x中使用
      網(wǎng)站URL:http://www.ef60e0e.cn/article/joidoj.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        高安市| 安庆市| 佛坪县| 类乌齐县| 益阳市| 黔西县| 方山县| 江都市| 惠水县| 苏尼特右旗| 五寨县| 交口县| 陵川县| 资阳市| 韶关市| 阜南县| 洪洞县| 汉源县| 嫩江县| 三河市| 万山特区| 临漳县| 保康县| 象州县| 白银市| 长丰县| 措勤县| 朝阳市| 南雄市| 上蔡县| 泰和县| 清镇市| 揭阳市| 益阳市| 大名县| 梅河口市| 汤阴县| 鄱阳县| 新河县| 仁布县| 砚山县|