6주차 카카오 테크 캠퍼스 2단계 - BE - 6주차 클론 과제 과제명 1. 카카오 클라우드 배포 과제 설명 1. 통합테스트를 구현하시오. 2. API문서를 구현하시오. (swagger, restdoc, word로 직접 작성, 공책에 적어서 제출 등 모든 방법이 다 가능합니다) 3. 프론트앤드에 입장을 생각해본뒤 어떤 문서를 가장 원할지 생각해본뒤 API문서를 작성하시오. 4. 카카오 클라우드에 배포하시오. 과제 상세 : 수강생들이 과제를 진행할 때, 유념해야할 것 아래 항목은 반드시 포함하여 과제 수행해주세요! 통합테스트가 구현되었는가? API문서가 구현되었는가? 배포가 정상적으로 되었는가? 프로그램이 정상 작동되고 있는가? API 문서에 실패 예시가 작성되었는가? 코드리뷰 관련: PR시, 아래 내용을..
5주차 카카오 테크 캠퍼스 2단계 - BE - 5주차 클론 과제 과제명 코드 리팩토링 과제 설명 카카오 쇼핑 프로젝트 전체 코드를 리팩토링한다 - AOP로 유효성검사 적용하기 - GlobalExceptionHanlder 구현하기 - 장바구니 담기 -> 예외 처리하기 - 장바구니 수정(주문하기) -> 예외처리하기 - 결재하기 기능 구현 (장바구니가 꼭 초기화 되어야함) - 주문결과 확인 기능 구현 과제 상세 : 수강생들이 과제를 진행할 때, 유념해야할 것 아래 항목은 반드시 포함하여 과제 수행해주세요! AOP가 적용되었는가? GlobalExceptionHandler가 적용되었는가? 장바구니 담기시 모든 예외가 처리 완료되었는가? 장바구니 수정시 모든 예외가 처리 완료되었는가? 결재하기와 주문결과 확인 코드..
PR 안녕하세요 멘토님! :) 작성한 코드에 대해 부족한 점, 잘못된 점, 잘한 점 등 아낌없이 조언해주시면 감사드리겠습니다! 😊 코드 작성하면서 어려웠던 점 BDDMockito 사용시 given 패턴에서 인자 설정 오류으로 인해 Stubbing이 되지 않는 문제가 발생하였고, any()와 anyInt()를 이용해 해결했습니다. Controller 테스트에서 Spring Security의 userDetails 값을 불러오지 못해 문제가 발생하였고, @WithMockUser로는 해결이 되지 않았습니다. 직접 Authentication 객체를 생성하여 주입하고, SecurityContextHolder의 Context에 설정하여 해결했습니다. Bean Validation에서 @NotEmpty, @NotBlan..
과제 수행 내용 (필수) : 강의를 들으며 모르는 개념 정리 5주차 과제를 수행하였습니다. (기능 구현) 내일 join fetch를 수행하는 것과 repository에서 조회하는 것의 쿼리를 비교해볼 생각입니다. AOP 개념에 대해 확실히 공부하고 어느정도 감을 잡은 것 같아 좋았습니다. 영속성 컨텍스트를 고려하여 DTO로 응답을 생성하였습니다. 더티체킹이 수행되는 시점이 @Transactional메서드 종료 후이므로 그 전에 DB 조회시 영속성 컨텍스트의 내용과 달라져 위험이 발생할 수 있습니다. 이때에는 명시적으로 DB에 반영하는 flush()를 사용함을 알 수 있었습니다. 또한 부모 트랜잭션과 자식 트랜잭션의 관계에 대해 생각해보았습니다. 금일 과제 수행 (코드 작성) 하면서 어려웠던 점 (선택) ..
Global ExceptionHandler (글로벌 익셉션 핸들러) 애플리케이션 내에서 발생할 수 있는 예외를 전역적으로 처리하는 방법 - Spring 프레임워크에서 제공 주로 @RestControllerAdvice 어노테이션과 함께 사용됨 RESTful API에서 발생하는 예외를 처리하는데 유용 ✅ Controller에서 발생하는 예외들을 한 클래스에서 처리할 수 있다. @RestControllerAdvice @ControllerAdvice + @ResponseBody(JSON 객체 리턴) @ControllerAdvice 모든 @Controller에서 발생하는 예외들에 대해 전역적으로 처리 가능한 @ExceptionHandler 📌 예외 발생시 일관된 응답이 가능하다. 📌 반복되는 try-catch문 ..