Inflearn brand logo image

인프런 커뮤니티 질문&답변

리나님의 프로필 이미지
리나

작성한 질문수

실전에서 바로 써먹는 Elasticsearch 입문 (검색 최적화편)

[실습] MySQL에 데이터 삽입/삭제 시 Elasticsearch에도 같이 반영되게 만들기

코드 에러 요청

해결된 질문

작성

·

39

·

수정됨

0

Spring boot 코드 에서 완성본에

CreateProductRequestDto

클래스에

 

public CreateProductRequestDto() {
}

기본 생성자가 없어서 파씽 관련 에러가 발생되는거 같습니다.



삭제 Controller 가보면

public ResponseEntity<Void> deleteProduct(@PathVariable(name = "id") Long id)

 

이렇게 @Pathvariable 옵션에 name 을 명시적으로 지정하지 않으면 Spring Converter 내에 문제가 발생되는거 같습니다.(spring boot 최신 버전 한에...)

 

 

 

답변 2

1

JSCODE 박재성님의 프로필 이미지
JSCODE 박재성
지식공유자

안녕하세요 리나님! 질문 잘 해주셨습니다:)

IntelliJ에서 빌드툴이 Gradle로 설정되어 있지 않아서 발생하는 문제로 보이네요!

아래 링크 활용해서 해결 시도해보셔도 좋을 것 같습니다!

https://velog.io/@betaa06/PathVariable-name-%EC%83%9D%EB%9E%B5%EC%8B%9C-%EC%97%90%EB%9F%AC

해결 시도해보시고 만약 안 되신다면 댓글 한 번 더 남겨주세요~~

(이 질문 덕분에 다른 분들한테도 도움이 많이 될 것 같네요😊)

0

안녕하세요, 인프런 AI 인턴입니다. 리나님. Spring Boot 코드에서 발생하는 에러에 대한 질문 주셨네요. 두 가지 주요 문제를 살펴보겠습니다.

1. 기본 생성자 누락으로 인한 파싱 에러

Spring에서는 기본 생성자가 필요합니다. 특히, Jackson 라이브러리를 사용하여 JSON을 객체로 변환할 시, 기본 생성자가 없으면 객체 인스턴스를 생성할 수 없어 파싱 에러가 발생할 수 있습니다. 따라서 CreateProductRequestDto 클래스에 기본 생성자를 추가해야 합니다. 이에 따라 코드는 다음과 같이 수정할 수 있습니다:

public class CreateProductRequestDto {
    public CreateProductRequestDto() {
    }
    
    // 기타 필드 및 메서드
}

2. @PathVariable에서 name 속성

Spring Boot의 최신 버전에서는 @PathVariable 이름을 명시적으로 지정하는 것이 필요할 때가 있습니다. 특히 이름을 명시하지 않고 매핑할 수 없을 경우에는 문제가 될 수 있습니다. 따라서 deleteProduct 메소드의 @PathVariable 사용은 이미 올바르게 되어 있는 것 같습니다. 만약 에러가 발생한다면 Spring 버전과 사용하는 델리게이트 컨버터의 문제일 수 있습니다. 이 부분은 정확히 어떤 에러가 발생하는지에 따라 다를 수 있으니 에러 로그를 참고하여 추가적으로 수정이 필요할 수 있습니다.

관련 참고 자료

해당 자료들은 DTO 파싱이나 Spring의 패스 변수 관련 처리를 어떻게 할 수 있는지에 대한 심화적인 설명을 제공합니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해 드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

리나님의 프로필 이미지
리나

작성한 질문수

질문하기