Spring
Spring Boot
Spring 설정

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
		)
}

이를 해결하기 위해서는 다음 두 가지 방법이 있다.

  1. @Data Annotation을 제거하고 필요한 getter, setter를 직접 만들어준다.
  2. 해당하는 모델을 코틀린 클래스로 변경해준다.