🔍 배경프로젝트 초기에 AWS Elastic Beanstalk 환경에서 애플리케이션을 수동 배포하고, Postman으로 API 테스트 진행⚠️ 문제 발생API 요청 시 502 Bad Gateway 응답 발생원인 분석 결과:서버 간의 통신 과정에서 유효하지 않은 응답이 반환됨Elastic Beanstalk의 기본 설정에서 애플리케이션은 포트 5000에서 실행됨Elastic Beanstalk의 기본 환경에서는 NginX가 Reverse Proxy로 사용, 내부에서 실행되는 애플리케이션과 프록시 역할을 수행하여 요청을 포트 5000으로 전달해야 함🎯 해결 방안Elastic Beanstalk 애플리케이션 환경 속성에서 SERVER_PORT 의 값을 5000으로 설정NginX와 내부 애플리케이션 간의 포트 일..
도전 기능 Lv 3-10. QueryDSL 을 사용하여 검색 기능 만들기📋 요구사항- 검색 조건(1) 검색 키워드로 일정의 제목을 검색할 수 있어요. 제목은 부분적으로 일치해도 검색이 가능해요.(2) 일정의 생성일 범위로 검색할 수 있어요. 일정을 생성일 최신순으로 정렬해주세요.(3) 담당자의 닉네임으로도 검색이 가능해요. 닉네임은 부분적으로 일치해도 검색이 가능해요.- 검색 결과(1) 일정에 대한 모든 정보가 아닌, 제목만 넣어주세요.(2) 해당 일정의 담당자 수를 넣어주세요.(3) 해당 일정의 총 댓글 개수를 넣어주세요.(4) 검색 결과는 페이징 처리되어 반환되도록 합니다. 💥 Trouble 1. 검색 결과에 담당자가 있는 일정만 필터링돼서 조회된다.키워드없이 검색했을 경우, 모든 Todo가 조회..
🌝오늘은 최종 프로젝트 전의 마지막 조가 결정된 날이다. 이 팀으로 JPA 심화, 코틀린, 도커, AWS 강의 수강과 플러스주차 프로젝트를 함께하게 되었다. 우리 조의 팀원들은 모두 같은 수준별 학습을 듣는데, 나도 그렇고 팀원 모두 주어진 과제를 다 수행하며 도전도 많이 해보았으면 좋겠다. 오늘 오후에 진행된 세션은 테스트 코드에 관한 두 번째 시간이었다. 내가 직접 테스트 코드를 작성해 본 경험은 바로 이전에 아웃소싱 프로젝트를 하면서 한두번 정도..? 정말 테스트 코드는 쉽지 않은 거 같다. 너무 어렵다💦 그래도 오늘 세션에서 테스트 코드 실습하면서 이게 뭐지? 했던 의문이 좀 풀렸다.. (ex. when().thenReturn(), ReflectionTestUtils )앞으로 직접 많이 작..
이번 심화 주차 개인과제는- (필수) 숙련 과제 필수사항 보완 및 기능 개선- (도전) Spring Advanced Repository 의 코드 리팩토링 및 코드 포맷팅, N+1 문제, 테스트 코드 적용으로 요구사항이 구성되어 있으며, 이전에 했던 과제처럼 서비스 로직을 구현하는 것이 아닌 주어진 기존 코드를 심층적으로 분석하고 이를 개선하는 데 중점을 두며, 코드의 품질을 높이는 작업에 초점을 맞추는 과제이다.여기서, Lv 5-3 [인터셉터, AOP를 활용한 API 로깅] 부분은 이해도가 부족하여 더 공부하고 문제를 해결해야 할 것 같다💦💦Lv2. [예외 처리 강화] 요구 사항의 키워드 중에서, GlobalExceptionHandler를 활용한 API 예외처리를 구현하고자 하였다. GlobalEx..
이번 과제는 저번 주에 JDBC로 구현했던 일정관리 앱을 JSP로 구현하고, 로그인 필터, 암호화 등의 요구사항이 추가되었다.튜터님께서 기술이 불편하면 새로운 기술이 나타난다고 하신 말씀이 생각난다.실제로 JDBC을 이용하다가 JPA를 이용해보니 코드가 훨씬 간결해지고 편하게 짤 수 있었다.하지만 지금도 계속 새로운 기술이 개발되고 있겠지.. 과제하면서 제일 구현하기 어려웠던 요구사항은 4. 로그인(인증) 이다. 지금은 어느정도 이해가 되긴하지만 chain 이용에 대해서는 아직.. 더 공부해야할 것 같다.API 명세기능MethodURLrequestresponse상태코드설명일정 생성POST/todos[JSON]∙title∙contentsTodoResponseDto200 CREATED작성일, 수정일👉🏻..
생성자 주입불변(immutable)과 실수 방지를 위함-> 순수 Java 코드로 사용할 때 (ex. 테스트 코드) 생성자의 필드를 필수로 입력하도록 만들어준다. (NPE 방지)-> 컴파일 시점에 오류를 발생시킨다. 즉, 실행 전에 오류를 알 수 있다.// 생성자 주입 방식@Componentpublic class MyApp { // 필드에 final 키워드 필수! 무조건 값이 있도록 만들어준다.(필수) private final MyService myService; // 생성자를 통해 의존성 주입, 생략 가능 @Autowired public MyApp(MyService myService) { this.myService = myService; } public void..