inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

19강. Controller 계층을 Kotlin으로 변경하기

선생님 19강 UI 테스트 하시는 부분에서 질문이 있습니다.

374

비가싫어요

작성한 질문수 87

2

19강 9분30초 지점에서 책 등록할 때는 400에러가 나면서 책 등록이 안 되는데 왜 그 전에 유저는 바로 정상적으로 등록이 되는걸까요?

build.gradle에 implementation 'com.fasterxml.jackson.module:jackson-module-kotlin:2.13.3' 이 디펜던시를 추가해주기 전에도 유저 등록은 정상적으로 되는 이유가 궁금합니다!


제가 자바로 개발을 할 때도 웹 계층 DTO에 필드가 한 개만 있을 때는 잭슨이 정상적으로 작동 안 해서 @NoArgConstructor 어노테이션이나 @Setter 등을 꼭 붙여줘야 이게 정상 작동했던 경험이 있습니다. (구글링을 해보니 잭슨 라이브러리 쪽 이슈인데 아직도 open 상태라는 글을 본 거 같기도 합니다..)

혹시 UserCreateRequest에는 프로퍼티가 2개 있고, BookRequest에는 프로퍼티가 1개 뿐이라 이런 일이 생긴 것인지도 좀 궁금하네요..

java spring kotlin spring-boot 리팩토링

답변 1

1

최태현

안녕하세요, JUNN님! 좋은 질문 남겨 주셔서 감사드립니다! 😊

결론부터 말씀드리면 JUNN님께서 파악해주신 내용 정확히 그대로 입니다!

제가 알고 있고로도 jackson 쪽 이슈로 인해 프로퍼티가 1개일 때와 2개 이상일 때의 직렬화/역직렬화 로직이 일부 다르고, 그로 인해 Java를 사용하건~ Kotlin을 사용하건~ DTO의 필드 개수에 따라 다른 설정을 추가적으로 해줘야 할 때가 있습니다.

저도 jackson 내부를 정확히 열어보지는 못해서, 프로퍼티 개수에 따른 내부 동작에 차이가 있다는 점만 인지하고 있고, 실제 코딩을 할 때는 프로퍼티 개수와 무관하게 모두 적용 가능한 동일 설정환경을 갖춘 후 신경쓰지 않는 편입니다.

(예를 들어 Kotlin에서는 data class + jackson kotlin module이 있으면 DTO로써 모두 사용할 수 있고, Java에서는 기본 생성자 + 추가 생성자 없음 + getter 조합이 있으면 모두 DTO로써 쓸 수 있었던 것 같아요!!!)

 

"책 등록할 때는 400에러가 나면서 책 등록이 안 되는데 왜 그 전에 유저는 바로 정상적으로 등록되었던 것" 역시 비슷하게 봐주시면 감사드리겠습니다!

 

또 궁금한 점 있으시면 언제든 편하게 질문 주세요~!!

감사합니다! 🙇🙇

1

비가싫어요

그렇군요! 정성스러운 답변 감사드립니다~

안녕하세요 혹시 프론트 코드 제공받을 수 있을까요?

0

69

2

실행이 안되네요

0

67

2

프론트 영역 보는법

0

52

2

companion object

0

79

2

Custom 레프직토리 형식

0

60

2

Querydsl 도입

0

68

2

fetch join DISTINCT 중복제거

1

84

2

표준 예외와 커스텀 예외 사용 전략 질문

0

92

3

이 질문이 왜 없는지 이해가 안 되지만 문제 인식 및 해결 방법 남깁니다.

1

177

2

테스트를 위한 코드

1

105

2

프로젝트 실행 에러

0

153

2

PDF 문서에 오타가 있어서 알려드립니다.

1

102

1

enum질문

1

86

1

테스트 후 AfterEach 함수에서 나오는 쿼리

0

136

2

테스트 fixture

1

211

2

./gradlew test 실행시 인식할수 없다고 뜹니다.

0

141

1

test 코드 실행시 경고가 발생합니다.

0

141

1

13강 User Kotlin 변환중

2

170

3

'추가 - 코프링과 플러그인' 강의 7:46 allopen 관련 질문

2

174

1

-

0

141

2

4:28 build.gradle 수정 시 kotlin-reflect관련 implementation 추가 해야할까요?

0

314

3

junit import 불가

0

276

3

테스트 코드와 관련하여 질문이 있습니다.

1

219

1

hibernate가 select를 두번 하는 이유

0

240

1