상세 컨텐츠

본문 제목

Lombok이란? 롬복 어노테이션 Lombok Annotation

Language/JAVA

by Computer_x86_64 2021. 8. 18. 23:30

본문

자바를 공부하다보면 @Override 를 경험할것입니다.

Override는 조상에서 정의된 메소드를

자손에서 다시 재정의하는 행위를 말합니다.

class box{ int num; box(){} box(int num){ this.num = num; } int getNum() { return num; } void setNum(int num) { this.num = num; } } class boxtest extends box { @Override int getNum() { return num; } @Override void setNum(int num) { this.num =num; } }

이때 지정해주는 @Override가 어노테이션입니다.
개발자가 실수나 컴파일러에게 미리 이를 알려주는 태그?같은것입니다.

해당 메서드는 조상클래스의 메소드를 재정의한 것이다.~~라고 하는 것이죠
예시가 너무 간단해서 부적절할수 있으나 원래 자손클래스에서 구현시 동일 구현부를 그대로 하고
동작은 다르게 할수도있습니다.

본론으로 돌아와서 이와같이 어노테이션은 개발자를 보다 편리하고 에러를 방지할수 있는 것입니다.
부여설명이 너무 기네요
딱 정리해서 책이나 여러 블로그를 보면
- 문법 에러를 확인합니다.
- 코드를 자동 생성합니다.
- 런타임시 특정 기능을 실행합니다.
이 3개가 가장큰 핵심입니다.

그럼 다시 제목에서 말씀드렸다시피 Lombok은 ?

자바의 객체지향을 공부하신 분들이라면

아니 당장 위에 예시를 보더라도
클래스하나에 구현해야하는 메서드들이 매우 많이 존재합니다.
Getter, Setter, Constructor , toString(), equals(), hashCode() 등....
(물론 구현안해도 되는 것도 있습니다.)

이런거 매번 타이핑하기도 귀찮고 그냥 타자연습이고 ...
개발자들은 이런거 정말 싫어하잖아요....
요즘 Eclipse말고 Intellj사용중인데 psvm이라고하면...(public static void main(Stirng[] args)가 나오는 기적이...ㅇㅁㅇ!
물론 Eclipse에서 체크하면 되고 Getter, Setter 마우스로 뚜딱이지만
타자에서 마우스로 이동하는그 ...시간 귀찮음...

또 서론이 본론으로 돌아와 자동으로 구현해주고 하는 게 Lombok입니다.
간단하게 몇개만 알아보겠습니다.

@NonNull
Null값이 될수 없다는 것을 명시한다. NullPointerException 에 대한 대비책이 될수 있다.


@EqualsAndHashCode
equals, hashCode자동 생성.
callSuper속성을 통해 equals와 hashCode메소드 자동생성시 부모클래스의 필드까지 감안할지 여부를 설정할수 있다. @EqualsHashCode(callSuper=true)로 설정시 부모 클래스 필드값들도 동일한지 체크, false(default)일겨우 현재클래스 필드만 확인한다.

@Slf4j
클래스 생성시 로그를 위해 Looger log선언해야하는데 어노테이션으로 대체할수 있다.


@NoArgsConstructor
기본 생성자가 만들어진다.


@RequiredArgsConstructor
클래스의 멤버변수중 final키워드, 혹은 lombok어노테이션인 @NonNull이 붙은 멤버변수만을 받는 생성자를 만들어준다.


@ToString
클래스의 멤버변수들에 toString을 적용시켜 변수들을 출력해줍니다.
순환참조(class A에 class B참조 class B에 class A참조)구조 구조일경우 무한 루프 발생한다. @ToString(exclude="classA")와같이 명시적으로 해당필드를 제외해줘한다.

관련글 더보기

댓글 영역