BACKEND/TROUBLE SHOOTING(8)
-
[trouble shooting] InvalidDefinitionException: Cannot construct instance of "DTO"(no Creators, like default constructor, exist): cannot deserialize from Object value
문제 @AllArgsConstructor를 사용해 모든 필드를 받는 생성자를 사용했는데도 Postman으로 테스트 시 에러가 남 해결 DTO에 @NoArgsConstructor을 추가 설명 Serialize(직렬화) : 객체의 상태를 바이트 스트림으로 변환 Deserialize(역직렬화) : 바이트 스트림을 객체 형태로 변환 POST 요청에서 에러가 발생했는데, 기본 생성자가 없어서 역직렬화 실패라고 한다. Controller단에서 @RequestBody가 설정되어 Json에서 DTO Object로 변환이 필요한 경우 에러가 발생하는 것 같다. @RestController에서 @RequestBody를 바인딩하기 위해 ObjectMapper를 사용하는데 기본 생성자로 DTO를 생성한다. 그렇기 때문에 @N..
2023.01.12 -
[trouble shooting] constructor cannot be applied to given types / @Builder & @NoArgsConstructor
문제 @Builer와 @NoArgsConstructor를 같이 쓰면 에러가 발생한다. 해결 @NoArgsConstructor 를 쓰고 클래스 레벨의 @Builder를 쓰게 되면 @AllArgsConstructor 없이 기본 생성자만 선언한 것과 같으므로 컴파일 에러가 뜬다. 설명 Lombok에서 제공하는 @Builder는 생성자 인자를 메서드 체인을 통해 명시적으로 대딥하여 생성자 호출할 수 있게 해준다. 생성자, 메서드, 클래스 레벨에서 쓰일 수 있고, 클래스 레벨에서 쓰일 경우 기본적으로 전체 멤버를 생성자의 매개값으로 갖는 private 생성자를 만든다. @Builder 를 붙이면 Lombok 빌더에서 해당 생성자를 바탕으로 빌더 패턴을 생성한다. 다시 말해서 Lombok의 @Builder는 기본적..
2023.01.04 -
[trouble shooting] git CRLF
문제 git이 갑자기 안 됨. 무슨 오류인지 파악 불가... 해결 config --global core.autocrlf true 설명 git에서는 다양한 운영체제에서 git repository를 사용할 때 수정하지 않아도 CRLF 개행 문자 차이로 인해 문제가 발생할 수 있다. 실제 코드에서는 변경된 것이 없는데 CR/LF으로 인해 줄바꿈 문자열이 달라져서 git history나 git blame을 볼 때 문제가 발생 또는 git이 변경으로 간주해 commit을 하게 될 수도 있고 변경 로그를 보거나 머지를 할 때마다 문제가 될 수도 있다. 이 문제가 생기지 않도록 하는 것이 core.autocrlf이다. Windows에서는 line ending으로 CR(Carriage-Return, \r)과 LF(Li..
2022.12.06 -
[trouble shooting] wrong value with @AllArgsConstructor & @RequiredArgsConstructor
문제 원하는 필드에 원하는 값이 들어오지 않음. 해결 파라미터의 순서가 중요. 설명 @AllArgsConstructor : 객체 내부의 인스턴스 멤버들을 모두 가지는 생성자를 생성 @RequiredArgsConstructor : 객체 내부의 final, @Notnull이 붙은 인스턴스 멤버들을 가지고 있는 생성자를 생성 두 어노테이션은 인스턴스 멤버의 순서가 중요하다. 인스턴스 멤버의 순서가 생성자의 파라미터의 순서와 동일하기 때문이다. 아래 클래스에 대해 자동으로 firstName, lastName 순서로 인자를 받는 생성자가 만들어지므로 파라미터도 필드 선언 순서에 맞게 써야한다. LombokTest lombokTest = new LombokTest("harry", "lee"); 근데 만약 인스턴스 ..
2022.11.30