java

Java & Spring

Nested Class

학습 계기 최근 업무중에 만난 코드에서 궁금증이 생겼었습니다. Static Nested Class에 @Service 애너테이션이 적용되어 있고, 해당 클래스 내부에 @Transactional이 적용되어 있어서, 왜 중첩클래스? 왜 static 선언? 이게 프록시가 적용되나? 등의 의문이 있었는데 마침 토비의 스프링 채널에 업로드된 Nested Class 관련 영상이 있어서 학습하고 정리해봤습니다. 용어 정리 Top-level Class vs Nested Class Static Nested Class vs Non-static Nested Class (inner class) Local Class Anonymous Class 이러한 용어들에 대해 아직 정확히 구분하지 못하고 있었다는 걸 배웠네요. 관련하여 쉐..

Java & Spring

🙌 쓰레드풀을 이용해 두 비동기 작업 처리 완료 후 후속 처리하기

전체 코드는 여기에서 확인하실 수 있습니다 :) 두 곳에 Ajax 요청을 보낸 뒤, 결과를 취합해 후속 작업을 해야 한다면? 언제 처리가 완료될지 정확히 알 수 없는 두 가지 작업이 있고, 그 작업들이 모두 완료된 이후에 취합하여 후속작업을 처리해야 한다고 가정해보겠습니다. 가령 서비스 레이어에서 두 곳의 엔드포인트에 요청을 보내고, 응답 값을 취합해서 결과에 따른 분기처리가 필요한 상황이라고 생각해볼 수 있을 것 같아요. 요청한 클라이언트에게 즉시 결과를 응답해야 한다면 두 요청을 쓰레드 풀 작업 큐에 넣고, 두 Future 객체의 get() 메서드를 이용해 기다린 후 응답한다 이 방법의 장점은 하나의 요청이 응답될 때까지 기다렸다가 다음 요청이 나가는 것이 아니라, 동시에 두 가지 요청이 호출된다는 ..

Java & Spring

📦 DTO는 택배상자 (Bean Validation 검증은 누가 하나?)

팀 프로젝트 중 DTO 사용 관련 논의가 있었습니다. DTO 내에 getter이외의 로직을 담지 않는 게 어떨지 제안하는 과정에서 제가 생각하는 DTO에 대한 정의를 이야기해보았습니다. 이와 관련해 다시 한 번 정리해봅니다. DTO 내 기본적 유효성 검증을 묶어주는 메서드를 만들어도 괜찮을까? public class SlackMessageRequest { @Nullable private String keyword; @Nullable @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) private LocalDateTime date; @NotNull private List channelIds; private boolean needPastMessage = true; ..

Java & Spring

모의면접 복기 (2) - 가비지 컬렉션 Garbage Collection

9월 24일 금요일, 모의 면접을 진행할 기회를 갖게 되었습니다. 부족했던 부분을 복기하며 하나씩 채워가고자 합니다. 1. 가비지 컬렉션이 어떤 원리에 의해 동작하는지 설명해주세요. 현재 진행중인 Scope를 벗어난 변수를 JVM에서 자동적으로 메모리에서 할당하는 것을 의미합니다. (그럼 Class에 field값은 어떻게 되나요? 현재 진행중인 코드가 아니니까 사라지나요?) 음.. 잘 모르겠습니다.. 다시 생각해도 정말 끔찍합니다 ;; 모의 면접 과정임에도 5분 정도 지나자 실제 면접과 다름없는 두려움(?)과 긴장감이 몰려왔습니다. 중간중간 몇번이나 마이크를 음소거하고 얼굴을 감싸쥐고 오열했습니다. 형편없다고 느껴지는 저의 실력과 답변에 괴로웠습니다. 그래서 다시 복기하며 채웁니다. 오늘은! 가비지 컬렉..

IDE

이클립스 버전별 JDK 버전 최소요구치 및 JVM 설정

1. Eclipse 버전별 JDK 버전 이클립스 설치 안내 공식 페이지. 버전별 JDK 버전에 대한 안내가 있다. 사내 솔루션 연동을 위해 이클립스의 plugins 폴더에 직접 jar 파일을 넣어 사용하는 플러그인이 이클립스 버전에 따른 이슈가 발생하는 것 같아 버전 관련 확인을 진행했다. 아래 표는 JDK 최소요구치가 상향된 최초의 버전들을 목록화한 표이다. Release Version JDK Required 2020. 09. 16 Eclipse 4.17 (2020-09) Java 11 or newer is required 2017. 06. 28 Eclipse 4.7 (Oxygen) Java 8 or newer is required 2016. 06. 22 Eclipse 4.6 (Neon) Java 8 ..

리차드
'java' 태그의 글 목록