소개
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'} repositories {mavencentral ()} 종속성 {classpath ( "org.springframework.boot : spring-boot-gradle-plugin : $ {springboot-gradle-plugin : $ {springboot-gradle-plugin : 'java'apply apply plugin :'java'apply 'org.springframework.boot'Apply 플러그인 :'io.spring.dependency-management 'group ='com.yanjun'version = '0.0.1-snapshot'sourcececatibility = 1.8repositories {mavencentral ()} 종속 {compile ('org.springframwork.boot ' 'org.springframework.boot : spring-boot-starter-web',) // lombok 종속성 컴파일 추가 'org.projectlombok : lombok : 1.18.0'}일반적인 주석
@Nonnull 쿼리 빈 처리
package com.yanjun.mybatis.bean; import lombok.data; import lombok.noargsconstructor; import lombok.nonnull;@data@noargsconstructorpublic class user {public integer age; @nonnull public string 이름;}동등합니다
package com.yanjun.mybatis.bean; import lombok.nonnull; public class user {public integer age; @Nonnull 공개 문자열 이름; 공개 정수 getage () {return this.age; } @nonnull public String getName () {return this.name; } public void setage (정수 시대) {this.age = age; } public void setName (@nonnull 문자열 이름) {if (name == null) {throw new nullpointerException ( "이름은 @nonnull이지만 null입니다"); } else {this.name = 이름; }}}시험
user user = new user (); user.setname (null);
효과
스레드의 예외 "main"java.lang.nullpointerexception : 이름은 @nonnull이지만 null입니다.
at com.yanjun.mybatis.bean.user.setname (user.java:7)
at com.yanjun.mybatis.lombokapplication.main (lombokapplication.java:15)
@Data는 Get and Set 메소드를 제공합니다
package com.yanjun.mybatis.bean; import lombok.data; @Data // 자동으로 Get and Set 메소드 공개 클래스 사용자 {Integer ID; 문자열 이름; 정수 시대; public static void main (String [] args) {// 테스트 방법 사용자 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 and set @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 전체 매개 변수 생성기
package com.yanjun.mybatis.bean; import lombok.allargsconstructor; import lombok.data; import lombok.extern.slf4j.slf4j; @data // get and set 방법을 자동으로 생성하고 설정 @allargsconstructor // 자동으로 전체 매개 변수 생성기 생성 @slf4j // integer {integger ehtoctor @slf4j // 문자열 이름; 정수 시대; public static void main (String [] args) {user user = new user (1, "zhaoyanjun", 20); log.info ( "login" + user.toString ()); }}@ToString은 자동으로 tostring 방법을 생성합니다
package com.yanjun.mybatis.bean; import lombok.allargsconstructor; import lombok.data; import lombok.tostring; import lombok.extern.slf4j.slf4j; @data // 자동으로 설정 및 설정 메소드 @allargsconstructor // 전체 매개 변수 구성 @slf4j // trint @slf4j // trint @slf4j // trint @allargsconstructor // { "id", "age"}) // tostring () 메소드 전용 인쇄 ID, 이름 필드 공개 클래스 사용자 {Integer ID; 문자열 이름; 정수 시대; public static void main (String [] args) {user user = new user (1, "zhaoyanjun", 20); log.info ( "login" + user.toString ()); }}toString () 메소드는 필드를 제외합니다
// 필드 제외 @ToString (제외 = { "name"}) // toString () 메소드에서 이름 필드는 인쇄에 참여하지 않습니다.@Value는 최종 클래스에 주석을 달 때 사용됩니다
@Value 주석은 @Data 와 유사합니다. 차이점은 모든 멤버 변수를 기본적으로 private final 수정으로 정의하고 set 메소드를 생성하지 않는다는 것입니다.
package com.yanjun.mybatis.bean; import lombok.value; @valuepublic 클래스 사용자 {Integer id = 1; 문자열 이름 = "Zhaoyanjun"; 정수 나이 = 3;}컴파일 된 코드
공개 최종 클래스 사용자 {개인 최종 정수 ID = 1; 개인 최종 문자열 이름 = "Zhaoyanjun"; 개인 최종 정수 시대 = 3; public user () {} public integer getId () {return this.Id; } public String getName () {this.getClass (); "Zhaoyanjun"을 반환합니다. } public integer getage () {return this.age; } // 코드를 생략 ......}@Builder : 주석이 달린 클래스에 생성자 패턴을 추가하십시오
Lombok.Builder; @BuilderPublic 클래스 사용자 {public Integer ID; 공개 문자열 이름; 공개 정수 시대;}다음 코드와 동일합니다
package com.yanjun.mybatis.bean; public class user {public integer id; 공개 문자열 이름; 공개 정수 시대; 사용자 (정수 ID, 문자열 이름, 정수 시대) {this.id = id; this.name = 이름; this.age = age; } public static user.userbuilder builder () {return new user.userBuilder (); } public static class userBuilder {개인 정수 ID; 개인 문자열 이름; 개인 정수 시대; userBuilder () {} public user.userBuilder id (정수 ID) {this.id = id; 이것을 반환하십시오; } public user.userBuilder name (문자열 이름) {this.name = 이름; 이것을 반환하십시오; } public user.userBuilder 연령 (정수 연령) {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 : 동기화 잠금을 추가하십시오
package com.yanjun.mybatis.bean; import lombok.synchronized; public class us {public integer age; 공개 문자열 이름; // 객체 잠금에 해당하는 일반 메소드 @synchronized int run1 () {return 1; } // 클래스 잠금에 해당하는 정적 메소드 @synchronized static int run2 () {return 2; }}코드의 효과는 동일합니다
공개 클래스 사용자 {private final 객체 $ lock = new Object [0]; 비공개 정적 최종 객체 $ lock = 새 개체 [0]; 공개 정수 시대; 공개 문자열 이름; public user () {} int run1 () {object var1 = this. $ lock; 동기화 된 (this. $ lock) {return 1; }} static int run2 () {Object var0 = $ lock; 동기화 ($ lock) {return 2; }}}위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.