@builder,@NoArgsConstructor,@AllArgsConstructor,@Getter,@Setter注解—lombok注解遇到的問題


在開發過程中,lombok的使用極大的簡化了實體類的開發工作。在通常情況下我們需要手動去建立getter和setter方法,構造函數之類的,而lombok的作用就是能夠在我們編譯源碼的時候自動幫我們生成這些方法,這些都是通過注解的方式:如@builder,@NoArgsConstructor,@AllArgsConstructor,@Getter,@Setter,@data等等。

a.添加lombok的pom依賴:

<dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>0.10.2</version>
</dependency>

在idea編譯器,可以在下載對應版本的lombok插件,這樣項目中就可以對於實體類進行簡化開發了。

b.@builder注解使用的問題:

@Builder聲明實體,表示可以進行Builder方式初始化,@Value注解,表示只公開getter,對所有屬性的setter都封閉,即private修飾,所以它不能和@Builder在一起用

(在我看來,就是相當於將對象的set方法簡化,在業務需求開發中,如果set的情況較多就可以使用,這樣可以提高代碼簡潔度,下面是我使用@builder的方法)

在實體類中加上@Builder注解,在service層即可使用:

//實質上,就是對象的setId(),setName()
Object object =object.builder().Id("123”).name(“張三”).build();

但是在使用JPA的findone方法的時候,報錯:沒有默認的構造器,我推測是因為在加上@builder使JPA的默認構造器失效了,因此查閱了資料發現lombok中存在兩個關於默認構造器的注解:@NoArgsConstructor(自動生成無參數構造函數),@AllArgsConstructor(自動生成全參數構造函數),於是嘗試着在實體類上加了這兩個注解,果然在使用JPA時就不會報錯了,所以建議在沒有遇到set方法使用過於繁多的情況下就不要用這個@builder了,可能是與對象關系映射的持久層框架有沖突。

c.總結:lombok極大的提高了我們的開發效率,java語言日新月異,難免遇到各類問題,還是活到老,學到老為妙!

lombok也存在其他的很實用的注解,比如@Data: 自動為所有字段添加@ToString, @EqualsAndHashCode, @Getter方法,為非final字段添加@Setter,和@RequiredArgsConstructor,技術很菜,希望可以多多學習!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM