본문 바로가기

프로그래밍/Troubleshooting

(4)
JPA 순환 참조, API 호출 시 순환 참조가 발생하는 이유 JPA의 순환 참조란 객체 간의 상호 참조가 무한 반복되는 경우를 말한다.객체 그래프에서 한 객체가 다른 객체를 참조하고, 그 다른 객체가 다시 처음 객체를 참조하는 상황이고 스택 오버 플로우가 발생할 수 있다. 사이드 프로젝트 진행 하던 도중 Service 단 개발을 끝내고 API를 만들다가 스택 오버 플로우가 발생 하였다.순환 참조를 미쳐 신경쓰지 못하고 있었음.. 순환 참조를 잘 예방해야겠다고 다시 한 번 생각함 Service를 테스트 할 때 까지만 해도 발생하지 않았던 문제인데 REST API를 구현하면서 문제가 발생한 이유는ResponseBody를 구현할 시 Object 형태의 값을 직렬화를 이용해 JSON 형태로 변환하는데 이 때 순환 참조가 발생하기 때문이다. public class Ord..
우연히 알게된 Mybatis의 캐시 Cache MyBatis를 사용하여 만든 프로젝트를 Jdbc Template으로 변경하고 있는 와중에 잘 성공하던 테스트 하나가 실패했다. 대충 시나리오를 설명하자면MemberService.findById 는1. MemberRepository.findById 를 호출하여 Member를 찾고2. ReserveRepository.findByMemberId 를 호출 하여 List를 찾고3. Member의 List를 채워서 반환해준다. 그런데 테스트에서 MemberService.findById 를 호출 후, 다른 함수에서 MemberRepository.findById 를 호출하고 Member.getReserve로 List를 조회하고 있었다. 당연히 MemberRepository.findById는 Member에 List는..
Spring Message, properties 한글 깨짐 해결 애플리케이션에 Message를 적용할 때 한글로 입력해놓은 메시지들이 ???. 로 깨지는 경우가 있다. 설정 -> 파일 인코딩전역 인코딩 : UTF-8프로젝트 인코딩 : UTF-8프로퍼티 파일에 대한 디폴트 인코딩 : UTF-8 모두 변경 후 IDE를 재시작 한다. 재시작 하면 이 전에 properties 에 입력해놓은 한글들이 ???.로 변경되어있다. 한글로 다시 입력해주고 실행하면 해결된다.
Nginx WebSocket 설정, Nginx WebSocket 안될 때 웹 사이드 프로젝트 진행 중 실시간 채팅, 알림 기능을 WebSocket을 이용하여 구현했다. AWS EC2 서버에 프로젝트를 배포하고 WebSocket으로 구현한 채팅, 알림 기능도 별 문제없이 동작하였는데. *탄력적 IP DNS, 8080 포트로 접근const socket = new WebSocket('ws://주소:8080/chatroom'); 자동 배포, 무중단 서비스를 만들기 위해 Nginx를 사용하는 순간 WebSocket 연결에 문제가 생겼다. 배포 과정에 서비스가 중단되지 않기 위해 Nginx 리버프 프록시를 이용해 8081, 8082 포트에 번갈아 가며 요청을 전달 하도록 하였는데 ( 이 과정은 생략 ) Nginx는 80(http), 443(https) 포트를 할당하며, 80번 포트는 기..