Lombok을 사용해보자
Lombok 이란
Lombok은 자바 언어에서 반복적으로 작성해야하는 코드를 자동으로 생성해주는 라이브러리이다
예를 들면 dto작성할때.....Getter, Setter, Constructor, toString 등의 메소드를 자동으로 생성해서
개발자가 직접 작성하지 않아도 되도록 도와준다
Lombok을 사용하기 위해서는 라이브러리를 프로젝트에 추가해야한다
라이브러리 의존성 추가
Maven을 사용하는 경우
pom.xml
파일에 다음과 같은 의존성을 추가해준다.
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.26</version>
<scope>provided</scope>
</dependency>
</dependencies>
Gradle을 사용하는 경우
build.gradle
파일에 다음과 같은 의존성을 추가해준다.
dependencies {
compileOnly 'org.projectlombok:lombok:1.18.26'
annotationProcessor 'org.projectlombok:lombok:1.18.20'
}
근데 Lombok을 사용할 때 주의해야 할 점이 있는데
Lombok이 생성해주는 코드는 컴파일시 자동으로 생성되기 때문에 IDE에서는 확인이 안된다
따라서 Lombok을 사용할 때는 IDE에서 Lombok의 기능을 지원해주는 플러그인을 설치해주는게 좋음
Lombok 어노테이션 종류
Lombok에서 제공하는 어노테이션은 종류가 많은데
그중 주요 어노테이션은 아래와 같다
@Getter
: Getter 메소드 생성@Setter
: Setter 메소드 생성@ToString
: toString 메소드 생성@EqualsAndHashCode
: equals, hashCode 메소드 생성@Data
: Getter, Setter, equals, hashCode, toString 메소드 생성@AllArgsConstructor
: 모든 필드(멤버변수)를 인자로 받는 생성자 생성@NoArgsConstructor
: 인자가 없는 "쌩" 기본 생성자 생성@RequiredArgsConstructor
: final 필드를 인자로 받는 생성자 생성
Lombok 사용 예시
@Data
의존성을 추가한 후, Lombok을 사용하고자 하는 클래스 상단에 @Data
어노테이션을 추가하면 자동으로 Getter, Setter, Constructor, toString 등이 생성된다
package com.project.test618.dto;
import lombok.Data;
@Data
public class MemberDTO {
String user_id;
String password;
String name;
String email;
int age;
}
package com.project.test618;
import com.project.test618.dto.MemberDTO;
public class MemberTest {
public static void main(String[] args) {
MemberDTO dto = new MemberDTO();
dto.setUser_id("park1234");
dto.setPassword("test1234");
dto.setName("박아무개");
dto.setEmail("park1234@email.com");
dto.setAge(23);
}}
MemberDTO
에서 @Data
어노테이션을 사용한뒤
dto객체를 불러와 접근했을때 getter,setter를 직접 적지 않아도 사용이 가능한것을 확인했다
@Builder
@Builder
어노테이션을 사용하여 빌더 패턴을 쉽게 구현할 수 있다
// MemberDTO.java
package com.project.test618.dto;
import lombok.Builder;
import lombok.Data;
@Builder
@Data
public class MemberDTO {
String user_id;
String password;
String name;
String email;
int age;
}
@Builder
어노테이션을 사용하여 dto에서 빌더 패턴을 구현하였고
이제 빌더를 사용하여 객체를 생성할 수 있음
package com.project.test618;
import com.project.test618.dto.MemberDTO;
public class MemberTest {
public static void main(String[] args) {
MemberDTO dto = MemberDTO.builder()
.user_id("park1234")
.password("test1234")
.name("박아무개")
.build();
}
}
빌더 패턴을 사용하면 필요한 속성만 설정하여 객체를 만들수있음!!
그리고 사용될 속성이 많은 경우에 가독성이 좋아진다는 장점이 있다
@AllArgsConstructor,
@NoArgsConstructor
Lombok은 @AllArgsConstructor
, @NoArgsConstructor
어노테이션을 제공하고 있다.@AllArgsConstructor
어노테이션을 사용하면
모든 필드를 인자로 받는 생성자, 또는 인자가 없는 생성자를 자동으로 생성할 수 있다
package com.project.test618.dto;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class MemberDTO {
String user_id;
String password;
String name;
String email;
int age;
}
위에서 @AllArgsConstructor
,@NoArgsConstructor
를 사용해서 만든 자바코드를
원래대로 풀어서 쓰면 아래처럼 되는것이다
package com.project.test618.dto;
public class MemberDTO {
String user_id;
String password;
String name;
String email;
int age;
public MemberDTO() {};
public MemberDTO(String user_id,String password, String name, String email, int age) {
this.user_id = user_id;
this.password = password;
this.name = name;
this.email = email;
this.age = age;
}}