도메인 계층 코틀린으로 변경하기

박경희·2025년 4월 3일
0

강의 복습 및 정리

목록 보기
37/38

Book Entity를 먼저 kotlin 코드로 변경 후~
repository와 service에서 사용하는 entity들을
자바 ->코틀린 entity로 바꿔주자.


Book

자바에서 코틀린 코드를 호출 할 때 default 파라미터를 인식하지 못한다.

val id: Long? = null

그렇기 때문에 id에 null을 넣자.
(service를 코틀린 코드로 바꾸면 그 때 default 파라미터를 활용할 수 있다)

변경 전 java코드

@Transactional
  public void saveBook(BookRequest request) {
    JavaBook newBook = new JavaBook(request.getName());
    bookRepository.save(newBook);
  }

변경 후 kotlin 코드

 @Transactional
  public void saveBook(BookRequest request) {
    Book newBook = new Book(request.getName(), null);
    bookRepository.save(newBook);
  }

service import를 정리 후 전체 테스트를 돌려보면 아래와 같은 에러가 난다.

nested exception is java.lang.NoClassDefFoundError: kotlin/reflect/full/KClasses

코틀린 클래스에 대해서 reflection을 못 한다는 의미.
=> 이걸 해결해주기 위해서는 코틀린 리플렉션 라이브러리를 넣어주어야 한다.

리플렉션: 클래스나 메소드 등을 런타임으로 제어하기 위한 기술이다.


참고 - 실전! 코틀린과 스프링 부트로 도서관리 애플리케이션 개발하기 (Java 프로젝트 리팩토링)

0개의 댓글