Spring Boot
Spring Initializr
Spring Initializr (opens in a new tab) 사이트에 접속해서 아래와 같이 설정하고 Generate Button을 누른다.

lombok
code generation을 자동으로 해준다.
- AllArgsConstructor : 전체 생성자를 갖는 Constructor를 생성해준다.
- NoArgsConstructor : AllArgsConstructor를 사용하면 기본 Constructor가 없어지기 때문에 기본 Constructor도 생성해준다.
// Lombok을 사용할 때 쓰는 annotation
// getter, setter 자동 생성
@Data
// 전체 파라미터가 있는 Constructor
@AllArgsConstructor
// 파라미터가 없는 Constructor
@NoArgsConstructor
public class BookQueryParam {
private String category;
private String issuedYear;
private String issuedMonth;
private String issuedDay;
}
Lombok과 Kotlin간의 호환
아래와 같은 Java Model Class가 있다고 가정할 때,
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class User {
private Long id;
private String name;
private String email;
private String password;
private UserStatus status;
private String address;
private LocalDateTime registeredAt;
private LocalDateTime unregisteredAt;
private LocalDateTime lastLoginAt;
}
.id가 생성되는 시점(@Data에서 만들어지는 getter)은 자바 빌드시인데 Kotlin에서 이를 사용하려고 할 경우 컴파일 순서가 kotlin -> java이기 때문에 id가 생성되지 않는다.
class UserOrderConverter {
....
return UserOrderEntity(
userId = user?.id,
store = storeEntity,
amount = totalAmount
)
}
이를 해결하기 위해서는 다음 두 가지 방법이 있다.
- @Data Annotation을 제거하고 필요한 getter, setter를 직접 만들어준다.
- 해당하는 모델을 코틀린 클래스로 변경해준다.