JPA를 탐독한지 어느덧 약 두 달째가 된 것 같습니다. 처음에 JPA를 하면서 QueryDsl을 쓰려다가 Spring 3.0.0에서 QClass가 잘 생성되지 않는 문제가 있기도 하고, QueryDsl을 사용하기 위해 QClass + Impl 구현체까지 만든다는 게 가뜩이나 Entity 및 Repository 숫자가 넘쳐나는 데 저것까지 만든 다는 점이 마음에 안들어서 폐기했습니다. 그렇게 순수 Spring data로만 구현한지 벌써 2달 째.. 결국 QueryDsl 없이 모든 걸 구현하긴 했습니다. 아직 그렇게 꽤 마음에 드는 수준이 아니라 좀 더 공부를 하면서 리팩토링 해야겠지만.. 그 와 중에 하다보니 좋은 기능이 있어서 소개를 해드리려고 합니다. 소개 해드릴 기능은 Annotation인 @For..

요 최근에는 거의 운동에 미쳐서 살고 있었습니다. 그 놈의 골격근 40kg이 뭐라고... 그러다 보니 출근하고 나서 헬스장 갔다가 집에 오면 운동 관련 유투브만 보는 루틴이 형성되고 말았습니다. 내가 개발자인지 운동 선수인지 오락가락 하다가 오랜만에 정신 차리고 본업을 해봅니다. 요즘에는 기술들이 너무 범람하고 있는 것 같습니다. 최근에 백앤드 개발자 개발 공고를 보면 요구 사항에 MSA부터 시작해서 JPA, Spring boot, Kotlin, Docker, Kubernetes, Nodejs, GRPC... 등등 끝이 없는데, 가진 무기가 별로 없어서 회사에서 새로 프로젝트를 만드는 김에 JPA를 사용하기로 마음 먹었습니다. 사실 JPA를 좋아하진 않는데(라고 쓰고 극혐이라고 생각하긴 하는데), 일단 ..
신규 프로젝트에 들어가게 되었는데 API 통신 내부에서 병렬로 각각 처리를 해야 하는 임무를 받았습니다. 그래서 이번 기회에 열심히 Multi Thread에 대해 공부하게 되었고 나름 스스로 만족할 정도로 공부를 끝냈습니다. 아래 내용은 제가 공부한 Multi Thread에 대한 내용입니다. - Thread 실행 Class Thread를 실행할 Class로 ThreadPoolExecutor를 생성하여 Thread Pool을 관리하는 방식입니다. 중간에 Thread를 Sleep 시키는 이유는 ThreadPoolExecutor가 어떤 방식으로 돌아가는지 Console로 확인하고 싶어서 넣었습니다. ThreadPoolExecutor는 기본적으로 선언한 CorePoolSize 만큼 Thread를 실행하다가 Co..
관리자 ID일 경우 로그인 할 때 사외 IP로 접근 시에 로그인이 되지 않도록 해둔 로직이 있었는데, 어느 순간부터 사내에 있는 PC로 접근했는데도 로그인이 되지 않는 일이 발생했습니다. 문제를 찾아보니 웹 서버에 접근할 때 L4(Load balancing)이나 Proxy 서버 등을 사용할 때 request.getRemoteAddr(); 로 IP를 가져오면 Client IP가 아니라 L4나 Proxy 서버의 IP를 가져오는 것을 알 수 있었습니다. 이런 장비들의 경우 Client IP를 Header에다가 남겨둔다고 합니다. 따라서, Client IP를 가져오기 위해서는 다음과 같은 로직을 사용해야 합니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 2..
- Total
- Today
- Yesterday