dev/자바

Lombok

아디봉 2022. 9. 27. 16:12

lombok이란?  
어노테이션 기반으로 Getter, Setter, Equlas, ToString 등을 사용할 수 있다.

 

적용 전 getter, setter 

public class BoardVO {
    private String brdId;

    public String getBrdId() {
        return brdId;
    }
    public void setBrdId(String brdId) {
        this.brdId = brdId;
    }
}

 

 

적용 후 getter, setter

@Getter
@Setter
public class BoardVO {

	private String brdId;

	/*public String getBrdId() {
        return brdId;
    }
    public void setBrdId(String brdId) {
        this.brdId = brdId;
    }*/
}

 

lombok 장점

어노테이션 기반의 코드 사용으로 생산성 향상 

반복되는 코드를 줄여줌으로써 가독성 및 유지보수성 향상 

Getter, Setter 외에 빌더 패턴이나 로그 생성 등 다양한 방면으로 활용

 

IntelliJ에서는 롬복은 기본플러그인 이라서 바로 사용하면 된다. 

eclipse에서는 https://projectlombok.org/download 에서 다운로드 후 약간의 설정 과정을 거쳐 사용하면 된다.

 

 

lombok 어노테이션

lombok에서 사용가능한 어노테이션이다.

https://projectlombok.org/features/

 

@Getter/@Setter

lombok에서 가장 자주 활용하는 어노테이션이다. @Getter, @Setter을 클래스 이름에 적용시키면 모든 변수에 대해서 적용되며, 변수명 위에 적어주면 해당 변수들만 적용도 가능하다.

@Getter
public class boardVO extend Common {
	
    @Setter
    private String brdId;
    private String brdId2;
    private String brdId3;
    

}

 

@ToString

ToString 메소드를 자동완성 시켜준다. 

제외시키고 싶다면 @ToString.Exclude 를 변수에 선언해주면 된다.

상속받은 상위클래스에도 ToString 적용시키고싶다면 @ToString(callSupter = true)를 적어주면 된다.

//@ToString(Exclude="brdId", callSuper = true)
@ToString
@AllArgsConstructor
public class boardVO extend Common {
	
    @ToString.Exclude
    private String brdId;
    private String brdId2;
    private String brdId3;
    
    //@AllArgsConstructor 어노테이션으로 아래코드가 자동적용됨
    /*public boardVO(String brdId, String brdId2, String brdId3) {
    	this.brdId = brdId;
        this.brdId2 = brdId2;
        this.brdId3 = brdId3;
    }*/
    
}

 

@EqualsAndHashCode

equals함수와 hashCode함수를 자동으로 생성해 준다. 

서로 다른객체에서 특정 변수의 값이 같은경우  같은 객체로 판단하고 싶을때 

of = {"변수명", "변수명"} 사용한다.

@EqualsAndHashCode(of = {"brdId", "brdId2"}, callSuper = false)
public class boardVO extends Common {

	@NonNull
    private String brdId;
    @NonNull
    private String brdId2;
    private String brdId3;
    
    //@EqualsAndHashCode 어노테이션으로 equals함수 hashCode함수 자동생성해줌
    
}

 

@NoArgsConstructor, @RequiredArgsConstructor and @AllArgsConstructor

AllArgsConstructor - 모든 변수의 생성자를 자동 완성시켜준다.

@Getter
@AllArgsConstructor
public class boardVO {
    private String brdId;
    private String brdId2;
    private String brdId3;
    
    //@AllArgsConstructor 어노테이션으로 아래코드가 자동적용됨
    /*public boardVO(String brdId, String brdId2, String brdId3) {
    	this.brdId = brdId;
        this.brdId2 = brdId2;
        this.brdId3 = brdId3;
    }*/
}

NoArgsConstructor - 기본 생성자를 자동 완성시켜준다.

@Getter
@NoArgsConstructor
public class boardVO {
    private String brdId;
    private String brdId2;
    private String brdId3;
    
    //@NoArgsConstructor 어노테이션으로 아래코드가 자동적용됨
    //public boardVO() {}
}

RequiredArgsConstructor - 특정 변수의 생성자만을 자동 완성시켜준다. (@NonNull, final) 

@Getter
@RequiredArgsConstructor
public class boardVO {
    @NonNull
    private String brdId;
    private final String brdId2;
}

 

@Data

@Tostring, @EqualsAndHashCode, @Getter, @Setter, @RequiredArgsConstructor 을 자동완성 시켜준다.

 

@Builder

@Getter
public class boardVO {
    
    private String brdId;
    private String brdId2;
    private String brdId3;
    private String brdId4;
    private String brdId5;
    private String brdId6;
    
    @Builder
    public boardVO(String brdId, String brdId2) {
    	this.brdId = brdId;
        this.brdId2 = brdId2;
    }
}

@Log

해당 클래스의 로그 클래스를 자동 완성 시켜준다.

@Log4j2
public class BoardController {

	//private final Log LOGGER = LogFactory.getLog(BoardController.class);

	@RequestMapping("/board/cateBoardList.do")
	public String cateBoardListHandler(ModelMap model) {
		
			log.error("error");
		
		return "board/cateBoardList";
	}
}

 

 

참고사이트

https://mangkyu.tistory.com/78