작성
·
214
·
수정됨
0
코드를 다시 찬찬히 살펴봐도 틀린게 뭔지 모르겠어요...
시간나시면 검토 가능 하실까요? 아니면 처음부터 다시 코딩을 해봐야겠네요
////
package com.group.libraryapp.UserController;
import com.group.libraryapp.domain.user.User;
import com.group.libraryapp.dto.calculator.request.user.response.UserResponse;
import com.group.libraryapp.user.request.UserCreateRequest;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import java.util.*;
@RestController
public class UserController {
private final List<User> users = new ArrayList<>();
@PostMapping("/user") // POST /user
public void saveUser(@RequestBody UserCreateRequest request){
users.add(new User(request.getName(), request.getAge()));
}
@GetMapping("/user")
public List<UserResponse> getUsers(){
List<UserResponse> responses = new ArrayList<>();
for(int i=0; i<users.size(); i++){
responses.add(new UserResponse(i + 1, users.get(i)));
}//users에 저장한 유져들을 for문으로 userResponse형태로 바꾸어 결과 list에 추가
return responses;
}
}
package com.group.libraryapp.dto.calculator.request.user.response;
import com.group.libraryapp.domain.user.User;
public class UserResponse {
private long id;
private String name;
private Integer age;
public UserResponse(long id, User user) {
this.id = id;
this.name = user.getName();
this.age = user.getAge();
}
public long getId() {
return id;
}
public String getName() {
return name;
}
public Integer getAge() {
return age;
}
}
package com.group.libraryapp.domain.user;
public class User {
private String name;
private Integer age;
public String getName() {
return name;
}
public Integer getAge() {
return age;
}
public User(String name, Integer age) {
if(name == null || name.isBlank()){
throw new IllegalArgumentException(String.format("잘못된 name(%s)이 들어왔습니다.", name));
}
this.name = name;
this.age = age;
}
}
// 해결했습니다.
강사님께서 화면공유 방법으로 해결해주셨고 말씀해주신 해결방법은
인텔리제이에서 run 후 오류내역에서
com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `com.group.libraryapp.user.request.UserCreateRequest` (no Creators, like default constructor, exist): cannot deserialize from Object value (no delegate- or property-based Creator)
at [Source: (org.springframework.util.StreamUtils$NonClosingInputStream); line: 1, column: 2]
확인하셨고
UserCreateRequest
클래스에서 기본생성자를 추가하여 해결하였습니다.
매개변수가있는 생성자를 사용하면 추가로 기본생성자를 만드는 습관을 들이겠습니당
답변 1
0
안녕하세요 준영님! 🙏 코드 공유해주셔서 감사합니다. 😊
보내주신 코드를 확인해보니 이상이 없었고, (= 코드를 잘 작성해주셨어요!) 실제 코드를 복사해서 제 컴퓨터에서도 돌려본 결과 정상적으로 유저 저장 및 조회가 이루어졌습니다 🙂
때문에 현재로서 의심되는 경우의 수는...
서버가 여러개 실행중이었고, 코드가 완성되지 않은 서버로 요청이 가고 있었다
정도인 것 같아요! 코드도 잘 작성하셨고, 실제 동작도 잘 되니까요! 🥺
만약 이 경우라면, IntelliJ를 완전히 종료하시고 컴퓨터 재시작 이후에, IntelliJ를 단 하나만 키신 후 다시 한 번 돌려보았을 때 해결될겁니다!
다만,
보내주신 에러 메시지 및 코드로는 제가 파악할 수 있는 내용에 한계가 있고
여전히 문제가 발생한다면 준영님께서 정말 답답해 하실 수 있기 때문에
구글 밋 + 화면 공유를 통해 직접 원인을 파악해 드리도록 하겠습니다.
제 메일 choi-0202@naver.com 로 연락 남겨주시면, 빠르게 연락드리겠습니다! 감사합니다 😊