ArgumentCaptor.java
ArgumentCaptor란? ArgumentCaptor는 Mockito 라이브러리에서 제공하는 클래스로, Mock 객체의 메서드 호출 시 전달된 인자를 캡처하여 나중에 검증할 수 있게 해주는 도구입니다. 일반적인 verify() 검증에서는 eq(), any() 등의 matcher를 사용하여 인자를 검증하지만, Argum...
ArgumentCaptor란? ArgumentCaptor는 Mockito 라이브러리에서 제공하는 클래스로, Mock 객체의 메서드 호출 시 전달된 인자를 캡처하여 나중에 검증할 수 있게 해주는 도구입니다. 일반적인 verify() 검증에서는 eq(), any() 등의 matcher를 사용하여 인자를 검증하지만, Argum...
SDKMAN 설치 및 사용 가이드 설치 curl -s "https://get.sdkman.io" | bash 설치 후 새 터미널을 열거나 아래 명령어 실행: source "$HOME/.sdkman/bin/sdkman-init.sh" 핵심 명령어 JDK 목록 조회 sdk list java ...
ApprovalTests.Java란? ApprovalTests.Java는 복잡한 객체나 출력 결과를 검증하는 데 특화된 Java 테스트 라이브러리입니다. 전통적인 단위 테스트가 어려운 상황에서, 특히 레거시 코드나 복잡한 데이터 구조를 테스트할 때 매우 유용한 도구입니다. Approval Testing 개념 Approv...
Java Instant 사용하기 Instant 란? Java 8에서 도입된 시간 API로, UTC(협정 세계시) 기준의 시간을 나타내는 클래스 시간대와 무관하게 항상 동일한 시간을 표현하며, 주로 타임스탬프나 시간 기반 연산 사용 주요 특징 UTC 기준: 모든 시간이 UTC 기준으로 표현 nanos...
Java 21 JVM Option 설정 튜닝 Problem JVM 옵션 튜닝 포인트 메모리 설정: 초기 힙 크기가 작아 동적 증가 시 오버헤드 발생 NewRatio 설정으로 인한 불필요한 메모리 조정 GC 설정: ZGC는 2GB 정도의 힙 크기에서...
Java 의 Virtual Thread 가상-스레드 Virtual Thread 가상-스레드는 JDK 19에서 도입된 새로운 스레드 모델로, 기존의 Platform Thread 플랫폼-스레드와는 달리 경량화된 스레드이다. 이는 수천 개의 스레드를 효율적으로 관리할 수 있도록 설계되었고, 처리량이 높은 Concurrent 동시...
Mono Spring Webflux 의 Reactive Stream 를 구현하고 있는 Reactor 는 Mono 와 Flux 이다. 그 중 Mono 는 0 ~ 1 개의 데이터를 전달 하는 역할을 한다. Mono 인스턴스 생성 방식 Just .just() 는 구독하는 순간. 특정 값을 바로 반환 emit 하는 함수...
Functional Endpoints Webflux 의 API 를 구현함에 있어 2가지 방식이 있다. @Contoller 어노테이션을 사용하는 Annotated Contollers 방식 Router 를 활용한 Functional Endpoints 방식 Annotated Contollers 방식 은 WebMVC ...
Spring Webflux step.1 Reactive Core Spring Webflux 에 대해서는 간략하게 정리를 해보았고, Webflux 에서는 Reactive Web Application 를 만들기 위해서는 Reactive Core 가 어떻게 구성되어있는지 살펴볼 필요가 있다. HttpHandler ...
Spring Webflux 에 대해서 Spring Framework5 에서 추가된 모듈로서, Reactive Programming 의 Server, Client Application 개발 API 라고 할 수 있다. Non-blocking 과 Reactive Stream 을 지원해주고 있기 때문에 비동기적인 프로그램 개발이 가...
RxJava Observable Observable class 는 Observer 디자인 패턴을 구현한다. 옵저버 패턴은 객체의 상태 변화를 관찰자 목록에 객체를 등록하고, 상태 변화 발생할때마다 함수를 호출하여 옵저버의 상태 변경에 대한 알림을 전달한다. Observable 종류 Observable : 가장 기본적인...
Functional Programming 을 통해서 함수형 프로그래밍이 무엇인지 알겠는데, 최종적으로 알고 싶은 Reactive Programming 이란 무엇일까. Reactive 를 알기 위해선 또 먼저 Async(비동기) 와 Non-blocking(논블로킹) 의 이해가 필요하다. 그래서 이번에는 Async & N...
Java 를 개발하면서 최근에는 Stream, Optional 등 Lambda 표현식으로 개발하는 경우를 많이 볼 수 있다. 이전에 JavaScript 를 개발하면서 어느정도 Lambda 를 사용한 개발 방식이 익숙하다고 생각했지만, Java 와는 다른 언어인 만큼 문법적인 정리가 필요하고, 과연 Java 에서는 어떻게 La...
객체 지향 5대 원칙 객체 지향 프로그래밍의 5대 원칙? SRP(단일 책임 원칙) OCP(개방-폐쇄 원칙) LSP(리스코프 치환 원칙) ISP(인터페이스 분리 원칙) DIP(의존성 역전 원칙) 1. Single Responsibility Principle(SRP, 단일 책임 원칙) 새로운 요구사항...