반응형
Java를 공부하려고 코드를 보다 보면 @Override 처럼 @에 뭔가 쓰여 있는 걸 매우 자주 볼 수 있다.
@는 자바에서 사용하는 라이브러리며 롬복(Lombok)이라 한다.
롬복(Lombok)이란?
반복 메소드 작성 코드를 줄여주는 라이브러리!
그러니까 반복되는 코드를 줄여주는 역할로, 코드 다이어트 라이브러리라고 부른다.
롬복의 특징
- 여러 가지 @어노테이션 제공
- 컴파일 과정에서 자동으로 개발자가 원하는 메소드를 생성/주입 방식으로 동작하는 라이브러리
- 이런 API를 사용하기 위해선 롬복 라이브러리 파일을 추가해줘야 한다.
- 클래스 등에 반복되는 getter, setter, toString 등 메소드를 자동으로 만들어주는 기능
Lombok 롬복의 장점
- 복잡하고 반복되는 코드를 자동 생성하도록 하여 생산성 향상 및 코드 축소를 할 수 있다.
- 이로 인해 코드의 가독성 및 유지보수성을 높일 수 있다
Lombok 롬복의 단점
- 코드 전체 내용이 눈에 직접 보이는 게 아니여서 직관성이 떨어질 수 있다.
어노테이션 종류
@Getter @Setter
- 가장 많이 사용되는 어노테이션으로 자동으로 생성된 접근자와 설정자 사용이 가능
@ToString
- toString() 메소드를 자동 생성함
- exclude로 특정 필드를 toString() 결과에서 제외시킬 수 있음
@EqualsAndHashCode
- equals와 hashCode 메소드 자동 생성
@Data
- @ToString, @EqualsAndHashCode, @Getter, @Setter, @RequiredArgsConstructor를 자동 완성 시켜줌
- 단, 실무에선 너무 무겁고 객체의 안정성을 위해 @Data의 활용을 지양함
@Data가 너무 무겁다는게 무슨 의미일까?
@Data가 무겁다는건 보통 ToString이 무겁다는 것을 의미한ㄷ. 너무 자세하게 나와서 문제인 것..
객체는 멤버를 가질 수 있는데, 그 멤버가 다른 맴버 클래스를 갖는다. 근데? 그 멤버가 원래 클래스를 다시 참조하게 되면서 순환 참조가 일어나는데, 순환 참조가 무한으로 발생해서 크래시가 난다. 그래서 toString 때문에 무거워지고 안정성이 떨어지는 것이다.
@Builder : 빌더 패턴 적용
- @NorgsConstructor : 파라미터가 없는 기본 생성자를 만듬
- @AllArgsConstructor : 모든 필드 값을 파라미터로 받는 생성자를 만들어줌
- @RequiredArgsConstructor : final이나 @NonNull 인 필드 값만 파라미터로 받는 생성자를 만들어줌
- @EqualsAndHashCode : equals와 hashcode를 자동으로 생성해주는 어노테이션
반응형
'Develop > Java' 카테고리의 다른 글
[intellij] gradle 다른 프로젝트 참조(클래스 참조방법) (0) | 2023.05.01 |
---|---|
[IntelliJ] Sub project(Multi Module) 구성 방법 (0) | 2023.04.03 |
[IntelliJ] Gradle - Lombok 설치방법 (Macbook) (0) | 2023.03.27 |
[IntelliJ]Java build system 및 프로젝트 빌드 하는 방법 (0) | 2023.03.19 |
JAVA 디자인 패턴 (0) | 2023.03.19 |