▶ 문제

springboot 2.6.2 버전을 이용하여 사이드 프로젝트를 진행했습니다.  RestController를 만들고 Postman으로 테스트를 했는데 No Creators, like default construct, exist): cannot deserialize from Object value (no delegate- or property-based Creator. 오류가 떴습니다. 


▶ 코드와 사진

1. 요청을 받을 RestController입니다. UserDto를 @RequestBody로 받아 회원가입을 진행합니다. 

@RestController
@RequiredArgsConstructor
public class UserController {

    private final UserService userService;

    @PostMapping("/signup")
    public ResponseEntity<String> signup(@RequestBody UserDto userDto) throws JsonProcessingException {
        userService.signup(userDto);
        return new ResponseEntity<>("ok", HttpStatus.OK);
    }

    @PostMapping("/login")
    public ResponseEntity<String> login(@RequestBody LoginDto loginDto, HttpServletRequest request){
        SessionDto sessionDto = userService.login(loginDto);
        HttpSession session = request.getSession();
        session.setAttribute(SessionConst.LOGIN_MEMBER,sessionDto);
        return new ResponseEntity<>("ok",HttpStatus.OK);
    }
}

2. UserDto class입니다.

@AllArgsConstructor
@Data
public class UserDto {
    public String email;
    public String password;
    public String name;
    public String role;
    public String city;
    public String street;
}

3. Postman 요청 

4. 오류난 사진


▶ 해결법

오류 내용을 읽어본다면 간단히 해결할 수 있었습니다. 해당 UserDto 클래스는 디폴트 생성자가 없어 오류가 뜨는 상황이었습니다. 그래서 default 생성자를 만들어주었더니 해결되었습니다!!

@AllArgsConstructor
@Data
@NoArgsConstructor  // default 생성자 추가
public class UserDto {
    public String email;
    public String password;
    public String name;
    public String role;
    public String city;
    public String street;
}

해결!!

 

 

읽어주셔서 감사합니다!!