게시글
스터디
모집중
김영한님 자바 고급편 1편 강의 스터디 모집
- 1
- 0
- 265
팀프로젝트
스터디 커뮤니티 프로젝트 디자이너와 PM 모집합니다.
- 0
- 0
- 164
스터디
모집완료
알고리즘 비대면 스터디원 모집합니다.
- 0
- 0
- 188
스터디
모집중
김영한 Spring Data JPA, QueryDSL 스터디원 모집
- 0
- 0
- 367
팀프로젝트
함께 프로젝트 진행하실 PM, 디자이너 모집합니다.
- 5
- 0
- 238
질문&답변
@Value 추가 시 에러 발생
혹시 저처럼 최신 버전으로 해당 강의를 보며 따라가시는 분들이 있으실 수도 있어서 도움이 되도록 본 질문과 관련된 문제와 해결 방법 공유하겠습니다.Version 초기화 수정일단 스프링부트 3.4.x 를 사용하시는 분들은 강사님 말씀대로 낙관적락 적용 시 init() 메서드에서 version = 0으로 직접 초기화 하는 부분을 빼시면 됩니다. 버전이 업데이트 되며 자동으로 해당 부분을 업데이트 해주는데, 직접 초기화 하는 과정에서 에러가 발생합니다.RestClient 호출 방법 변경 강의에서 restClient호출 시 메서드 체이닝을 restClient.post().uri().retrieve() 로 하고 있으나 버전 업데이트 이후에는 uri().retrieve().toBodilessEntity()까지 해주어야 합니다. 실제 공식 문서 확인 결과 retrieve() 까지만 호출했을 경우 서버에 호출이 되지 않는다라고 적혀있네요.onStatus 메서드 체이닝 추가 위에까지 했을 때도 테스트가 정상 작동하지 않습니다. 이유는 서버에서 낙관적락으로 데이터 업데이트 충돌 시 에러가 발생하는데 이 에러를 restClient에서 변환해서 처리할 수 없기 때문입니다. 그 결과 restClient 호출 시 에러가 발생하여 해당 작업을 처리하고 있는 스레드가 죽어버리는 문제가 발생합니다.따라서 .onStatus 메서드 체이닝을 추가하여 해당 statusCode를 처리할 수 있는 handler를 추가해줘야 합니다.최종적으로 다음과 같은 방식으로 코드를 수정하면 강의 내용을 따라가는데 문제가 없습니다.ArticleLikeCount public static ArticleLikeCount init(Long articleId, Long likeCount) { ArticleLikeCount articleLikeCount = new ArticleLikeCount(); articleLikeCount.articleId = articleId; articleLikeCount.likeCount = likeCount; return articleLikeCount; }test - like 메서드 void like(Long articleId, Long userId, String lockType) { restClient.post() .uri("/v1/article-likes/articles/{articleId}/users/{userId}/" + lockType, articleId, userId) .retrieve() .onStatus(HttpStatusCode::is5xxServerError, (request, response) -> { return; }) .toBodilessEntity(); }
- 0
- 3
- 269
팀프로젝트
함께 프로젝트 진행하실 팀원 모집합니다!
- 3
- 0
- 249
팀프로젝트
스터디 관련 커뮤니티 프로젝트 진행할 팀원 모집합니다.
- 0
- 0
- 300
스터디
모집완료
김영한님 스프링 고급편 강의 스터디 모집
- 0
- 0
- 203
스터디
모집완료
[김영한님 스프링 백엔드 강의 스터디 인원 추가 모집]
- 2
- 0
- 1.5K