생각을 정리해가며 풀었다. 역시 적으면서 푸니까 식 정리가 더 잘 되는 것 같다.
charAt()
: String으로 저장된 문자열 중에서 한 글자만 선택해서 char타입으로 변환해주는 녀석
String answer = "";
for(int i = my_string.length() -1; i >= 0; i--) {
answer = answer + my_string.charAt(i);
}
문자열의 배열에서 뒤집힌 문자열로 만들어주는 식이다.length()
: 문자열의 길이를 알려준당
for (int i = 0; i < strlist.length; i++) {
answer[i] = strlist[i].length();
}
무한재귀,, 순환참조....
댓글 수정기능을 만들고 포스트맨으로 확인을 하면서 게시글 조회 기능을 확인하는ㄷ데,..!! 두둥
ERROR 20564 --- [nio-8080-exec-4] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: org.springframework.http.converter.HttpMessageNotWritableException: Could not write JSON: Infinite recursion (StackOverflowError)] with root cause
java.lang.StackOverflowError: null
at java.base/java.math.BigDecimal.add(BigDecimal.java:4994) ~[na:na]
...
com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer.serialize(LocalDateTimeSerializer.java:37) ~[jackson-datatype-jsr310-2.14.1.jar:2.14.1]
...
@Getter
public class BlogResponseDto {
...
private List<Comment> comments;
public BlogResponseDto(Blog blog) {
...
this.comments = blog.getComments();
}
}
기껏 dto를 만들었는데 Comment객체를 다시 고대로 들고 와서
getComments의 댓글리스트에서 Comment 클래스에 blog에 Getter가 붙어있어
jackcon형님이 데이터를 json형식으로 변환해주려고 하는데 getter가 있어서 comment -> blog -> comment -> blog 반복
해서 생기는 오류이다.
dto를 만들어주면 해결됨!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
List<CommentResponseDto> list = new ArrayList<>();
for (Comment comment : blog.getComments()) {
list.add(new CommentResponseDto(comment));
}
this.comments = list;
언제나 객체 고대로 들고 올 생각은 하지도 말자. dto dto dto 생각생각생각