Lombok (롬복)
- Lombok은 데이터(모델) 클래스를 생성할 때 반복적으로 사용하는 getter/setter같은 메서드를 어노테이션으로 대체하는 기능을 제공하는 라이브러리이다.
- 이는 반복되는 코드를 생략하여 가독성을 높여줄 수 있다.
- 또한 어노테이션 기반으로 코드를 자동 생성해주어 생산성이 높아진다.
Lombok 의존성 추가
Gradle
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
build.gradle에 dependencies에 위 코드를 추가
Maven
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependencies>
pom.xml에 위 코드를 추가
Lombok의 주요 어노테이션
@Getter, @Setter
- 클래스에 선언돼 있는 필드에 대한 getter/setter 메서드를 생성한다.
생성자 자동 생성 어노테이션
NoArgsConstructor
: 매개변수가 없는 생성자를 자동 생성AllArgsConstructor
: 모든 필드를 매개변수로 갖는 생성자를 자동 생성RequiredArgsConstructor
: 필드 중 final이나 @NotNull이 설정된 변수를 매개변수로 갖는 생성자를 자동 생성
@ToString
- toString() 메서드를 생성하는 어노테이션
- @ToString(exclude = "필드명") 으로 특정 필드를 제외할 수 있다.
- 다음은 출력 예시이다.
Product(id=1, name="Product Name", price=10.0)
EqualsAndHashCode
@EqualsAndHashCode는 객체의 동등성(Equality)와 동일성(Identity)을 비교하는 연산 메서드를 생성한다.
- equals: 두 객체의 내용이 같은지 동등성을 비교한다.
- hashCode: 두 객체가 같은 객체인지 동일성을 비교한다.
만약 부모 클래스가 있어서 상속을 받는 상황이라면 부모 클래스의 필드까지 비교할 필요가 있는 경우가 발생한다.
이 때 @EqualsAndHashCode(callSuper = true)로 부모 클래스의 필드를 비교 대상에 포함할 수 있다.
동등성과 동일성에 관하여
Equality(동등성):
- 두 객체가 가진 속성 또는 값을 비교
- 같은 데이터를 갖는지를 검사하기 때문에, 어느 메모리에 위치하고 있는지는 신경쓰지 않는다.
equals()
메서드를 사용하여 동등성을 구한다.
Identity:(동일성)
- 두 객체가 같은 메모리 주소에 있는지를 비교합니다.
==
연산자로 비교합니다.
예제
String str1 = "Hello";
String str2 = new String("Hello");
str1.equals(str2)
는 true이다. 왜냐하면 두 문자열이 같이 때문이다.str1 == str2
는 false이다. 둘은 다른 메모리 영역에 위치하고 있기 때문이다.
@Data
@Getter,@Setter,@RequiredArgsConstructor,@ToString,@EqualsAndHashCode를 모두 포함하는 어노테이션 이다.
참고 자료
- 스프링 부트 핵심 가이드 "스프링 부트를 활용한 애플리케이션 개발 실무" , 장정우, 2022
'Development > Spring' 카테고리의 다른 글
[Spring] JPQL (JPA Query Language)과 쿼리 메서드 (1) | 2024.02.28 |
---|---|
[Spring] 스프링 부트에서 테스트 코드 작성하기 (0) | 2024.02.23 |
[Spring] OpenSessionInViewFilter (0) | 2024.02.21 |
[Spring] Controller와 API 구현하기 (0) | 2024.02.20 |
[Spring] 빌드 관리 도구,Gradle과 Maven (0) | 2024.02.19 |