TDD란? Test Driven Development로프로덕션 코드보다 테스트 코드를 먼저 작성하여 테스트가 구현 과정을 주도하도록 하는 방법론Red-Green-RefactoringRed실패하는 테스트 작성구현부가 없이 테스트를 먼저 작성하는 것이기 때문에 실패할 수 밖에 없습니다.Green테스트 통과를 위한 최소한의 코딩테스트를 통과하기 위해서라면 대충 코딩해도 괜찮습니다.Refactoring구현 코드 개선 및 테스트 통과 유지예시) 장바구니에 담긴 음료의 총 금액을 계산하는 기능을 TDD로 구현하기 1. Red// Test Code@Testvoid calculateTotalPrice() { CafeKiosk cafeKiosk = new CafeKiosk(); Americano americano = n..
Spring Framework의 Web Socket 지원Spring 공식 문서를 살펴보면, 다음과 같은 3가지 기능을 지원하고 있는 것을 확인할 수 있다. WebSockets :: Spring FrameworkThe WebSocket protocol, RFC 6455, provides a standardized way to establish a full-duplex, two-way communication channel between client and server over a single TCP connection. It is a different TCP protocol from HTTP but is designed to work over HTTP, usindocs.spring.ioWeb Socket ..
Filter란? Dispatcher Servlet에 Request(요청)가 전달되기 전/후에 URL 패턴에 맞는 모든 요청에 대해 부가작업을 처리할 수 있는 기능을 제공하는 것 J2EE 표준 스펙 기능 ⇒ Java Servlet에서 제공 또한, Filter는 FilterChain을 통해 여러 Filter가 연쇄적으로 동작하게 할 수 있습니다. Filter의 메서드 필터를 추가하기 위해서는 `javax.servlet`의 `Filter` 인터페이스를 구현해야 합니다. `Filter` 인터페이스는 다음의 3가지 메서드를 가지고 있습니다. `init()` `doFilter` `destroy` public interface Filter { public default void init(FilterConfig fil..
Interceptor(인터셉터)란? Interceptor는 Controller가 요청을 처리하기 전/후 처리를 위한 것으로, Spring MVC에서 HTTP 요청을 가로채 처리하는 컴포넌트 입니다. 클라이언트의 요청이 Controller로 전달되기 전에 사전 작업을 수행하거나, Controller의 실행 이후 사후 작업을 수행할 수 있습니다. 즉, 서버에 들어온 Request 객체가 Controller의 Handler로 도달하기 전에 확인해 개발자가 원하는 추가적인 작업을 수행한 뒤, Handler로 보낼 수 있도록 해주는 것이 Interceptor 입니다. Interceptor를 사용하면 공통 코드 사용으로 코드의 재사용성이 증가합니다. 또한, 로깅, 모니터링 정보 수집, 접근 제어 처리 등의 실제 비..
Reactor에서의 디버깅 방법 Reactor는 처리되는 작업들이 대부분 비동기적으로 실행되고, Reactor Sequence는 선언형 프로그래밍 방식으로 구성되므로 디버깅이 쉽지 않습니다. 이러한 디버깅의 어려움을 최소화하기 위해 Reactor에서는 몇 가지 방법을 제공합니다. 1. Debug Mode를 사용한 디버깅 Reactor에서는 디버그 모드(Debug Mode)를 활성화해서 Reactor Sequence를 디버깅할 수 있습니다. @Slf4j public class DemoApplication { public static Map fruits = new HashMap(); static { fruits.put("banana", "바나나"); fruits.put("apple", "사과"); fruit..
Context란? Context는 어떠한 상황에서 그 상황을 처리하기 위해 필요한 정보 라고 할 수 있습니다. 프로그래밍에서 몇 가지 예시를 들어보면 다음과 같습니다. ServletContext := Servlet이 Servlet Container와 통신하기 위해서 필요한 정보를 제공하는 인터페이스 ApplicationContext := Spring Framework에서 애플리케이션의 정보를 제공하는 인터페이스 SecurityContext := Spring Security에서 애플리케이션 사용자의 인증 정보를 제공하는 인터페이스 이처럼 프로그래밍 세계에서 Context는 어떠한 상황을 처리하거나 해결하기 위해 필요한 정보를 제공하는 어떤 것이라고 할 수 있습니다. Java에서는 인터페이스 또는 클래스가 ..