inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

코틀린 문법부터 실무까지 (실전 자바->코틀린 변환)

실습 - controller 변환해보기

서비스, 컨트롤러 질문입니다.

359

jheom

작성한 질문수 4

0

1. 컨트롤러를 변환후 test실행했는데요.

com.makers.princemaker.exception.PrinceMakerException: 해당되는 왕자님이 안계십니다.

at com.makers.princemaker.controller.PrinceMakerController.getPrinces(PrinceMakerController.kt:31) ~[main/:na]

 

31번째 라인 소스입니다.

@get:GetMapping("/princes")
val princes: List<PrinceDto>
    get() = princeMakerService.allPrince

 

오류메세지를 자세히 보니 수업시간에 말씀하신부분인거 같은데 정확하게 어딘지 못찾겠네요...

 

ERROR 68014 --- [ Test worker] c.m.p.e.PrinceMakerExceptionHandler : url: /create-prince, message: Validation failed for argument [0] in public com.makers.princemaker.dto.CreatePrince$Response com.makers.princemaker.controller.PrinceMakerController.createPrince(com.makers.princemaker.dto.CreatePrince$Request): [Field error in object 'request' on field 'experienceYears': rejected value [null]; codes [NotNull.request.experienceYears,NotNull.experienceYears,NotNull.java.lang.Integer,NotNull]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [request.experienceYears,experienceYears]; arguments []; default message [experienceYears]]; default message [must not be null]]

 

 

 

  1. 컨트롤러 변환이후 서비스에서 WoundedPrinceRepository해당 파라미터가 not-null인데 null로 설정되어있다고 오류메시지가 나와서 서비스 상단 생성자 부분을 아래와 같이 수정했더니 오류가 사라졌는데 맞게 수정한걸까요?

class PrinceMakerService (
    private val princeRepository: PrinceRepository,
    private val woundedPrinceRepository: WoundedPrinceRepository?
) 

java spring kotlin spring-boot 객체지향

답변 2

0

jheom

제가 serviceTest 소스에

 

@Mock
private WoundedPrinceRepository woundedPrinceRepository;

빠져있어서 정상컴파일 했습니다.

 

추가 궁금한게 잇는데요.

POST http://localhost:8080/create-prince

실행하면 다음과 같이 오류메시지가 나오는데요

{

"errorCode": "DUPLICATED_PRINCE_ID",

"errorMessage": "고유 왕자번호가 중복됩니다."

}

 

그래서 제가 아래처럼 delete를 호출하고 다시 create호출하면 동일한 오류가 나오는데 왜 그런걸까요?

DELETE http://localhost:8080/prince/john1

 

0

양세열

안녕하세요. jheom님 🙂

 

http의 DELETE method를 통해 API를 호출하였지만 로직 상 실제로 DB에서 delete를 수행하는 것은 아니고 왕자의 상태를 WOUNDED로 변경하기만 하는 로직이 동작하게 됩니다.

 

따라서 동일한 id로 create를 호출하게 된다면 DUPLICATED 오류가 발생하게 됩니다.

현재 로직의 컨셉 상 정상적인 동작입니다 😀

0

양세열

안녕하세요 jheom님 😀 질문 감사드립니다~!

 

컨트롤러 변환 과정 중이시군요..!

  1. 요 부분은 아마 제 강의에서 "실습 - controller 변환해보기"의 Controller를 코틀린으로 변환 후 테스트가 깨지는 현상을 말씀주신 것 같습니다.

    1. 어노테이션의 올바른 위치를 알려드리기 위해서 의도적으로 깨지도록 되어 있었습니다.

    2. 해당 강의의 10분 42초 부분을 참고해주세요.

    3. @Valid annotion의 위치를 올바르게 수정해주시면 됩니다.

 

  1. 컨트롤러 변환과 서비스 쪽에서의 코드는 연관이 없기 때문에 해당 오류가 발생하면 안될 것 같습니다..^^;;

    1. 혹시 다른 부분에 의도치않은 수정이 발생한 부분이 없는지 체크해봐주시면 좋을 것 같습니다.

       

    2. WoundedPrinceRepository가 정상적으로 bean으로 등록이 되고 있는지 체크해봐주세요.

    3. 혹은 Invalidate Caches... 를 한번 수행해주시는 식으로 Cache를 날려보시면 효과가 있을 수도 있습니다.

 

답변드린 부분이 맞는지 체크해봐주신 후 이상이 있으면 다시 연락 부탁드립니다~!

감사합니다. 좋은 밤 되세요 :)

2026.04에 추가된 강의 시청 불가

0

3

0

Service Create/Update Record 운용과 Delete Record 미운용의 차이 질문

0

10

1

문제 리스트 페이지

0

12

1

인가 코드 발급(프론트 vs 백)

0

20

2

part8 Notion 링크

0

10

1

채점 사이트 관련 질문드립니다

0

13

1

인텔리제이 MCP 서버 설정 관련

0

16

1

조회속도 개선에서 더 개선하는 방법이 궁금합니다.

0

22

2

필기자료 사라졌나요?(실기 일주일만에 안돼서 재도전-_-)

0

30

2

Sequence 관련 질문

1

27

2

Image Only Query

1

24

2

servlet과 container에 대한 질문입니다

0

22

1

질문있습니다

0

23

1

1번 문제 질문입니다.

0

29

1

@MockK에서 null을 할당하는 이유?

1

81

1

@RelaxedMockK로 모킹하고 save 함수를 왜 또 모킹하는지 모르겠습니다.

1

339

1

build.gradle.kts 변경시 오류가 발생합니다.

0

470

1

실습. dto 변환해보기

1

341

1

실습. gradle update/script 강의 문의

1

334

2

IntelliJ IDEA 문의

1

266

1

PDF 안에 파일이 없습니다

1

374

2

강의교재 PDF

1

267

1

import 질문

1

334

2

안녕하세요 질문이 있습니다.

1

364

1