
Spring WebFlux 리액티브한 샘플 애플리케이션 구현 프로젝트 설정 Spring WebFlux를 프로젝트에서 사용하기 위한 설정은 Spring MVC 학습에서 설정했던 방식과 크게 다르지 않지만 약간의 차이점이 존재함 build.gradle 설정 ... dependencies { implementation 'org.springframework.boot:spring-boot-starter-webflux' // (1) implementation 'org.springframework.boot:spring-boot-starter-validation' implementation 'org.springframework.boot:spring-boot-starter-data-r..

Spring WebFlux Spring WebFlux란? Spring 5 버전에 새롭게 추가된 기술 스택은 바로 리액티브(Reactive) 스택이며, 리액티브(Reactive) 스택이 Spring 5에 추가되면서 항상 언급되는 기술이 바로 WebFlux WebFlux라는 용어는 Reactor의 타입인 Flux가 Web에서 사용된다고 할 수 있으며, 조금 더 넓게 생각해 보면 WebFlux는 리액티브 한 웹 애플리케이션을 구현하기 위한 기술 자체를 상징하고 있다고 할 수 있음 Spring WebFlux는 Spring 5부터 지원하는 리액티브 웹 애플리케이션을 위한 웹 프레임워크 Spring MVC 프레임워크를 사용해서 웹 애플리케이션을 구현할 수 있듯이 Spring WebFlux 프레임워크를 사용해서 리액..

Project Reactor Operators Operator는 Reactor에서 가장 중요한 구성요소 리액티브 스트림즈의 구현체인 Reactor 역시 다양한 종류의 Operator를 지원함 Operator의 종류가 너무 많기 때문에 적절한 상황에 맞게 사용할 수 있도록 Operator가 상황별로 분류가 되어 있음 상황별로 분류된 Operator 목록 리뷰 새로운 Sequence를 생성(Creating)하고자 할 경우 just() fromStream() fromIterable() fromArray() range() interval() empty() never() defer() using() generate() create() 기존 Sequence에서 변환 작업(Transforming)이 필요한 경우 ma..

Project Reactor Project Reactor란? Reactor란? Reactor는 리액티브 스트림즈 표준 사양을 구현한 구현체 중 하나 Reactor는 Spring 5 버전부터 지원하는 리액티브 스택에 포함되어 리액티브 한 애플리케이션으로 동작하는 데 있어 핵심적인 역할을 담당하는 리액티브 프로그래밍을 위한 라이브러리 Reactor 특징 Reactor는 리액티브 스트림즈(Reactive Streams)를 구현한 리액티브 라이브러리 가장 많이 나오는 용어가 바로 Non-Blocking으로, Non-Blocking은 리액티브 프로그래밍의 핵심적인 특징이며, Reactor 역시 완전한 Non-Blocking 통신을 지원함 Reactor는 Publisher 타입으로 Mono[0|1]와 Flux[N]..

리액티브 프로그래밍 리액티브 프로그래밍 구조 명령형 프로그래밍 vs 선언형 프로그래밍 명령형 프로그래밍 public class ImperativeProgrammingExample { public static void main(String[] args){ // List에 있는 숫자들 중에서 4보다 큰 짝수의 합계 구하기 List numbers = List.of(1, 3, 6, 7, 8, 11); int sum = 0; for(int number : numbers){ if(number > 4 && (number % 2 == 0)){ sum += number; } } System.out.println(sum); } } List에 포함된 숫자들을 for문을 이용해서 순차적으로 접근한 후, if 문으로 특정 조건..

리액티브 프로그래밍 리액티브 프로그래밍이란? 리액티브 시스템(Reactive System) 리액티브 시스템은 한마디로 반응을 잘하는 시스템을 의미하는 것으로, 여기서의 반응은 리액티브 시스템을 이용하는 클라이언트의 요청에 반응을 잘하는 시스템을 의미함 리액티브 시스템 관점에서의 반응은 스레드의 Non-Blocking과 관련이 있음 리액티브 시스템은 클라이언트의 요청에 대한 응답 대기 시간을 최소화할 수 있도록 요청 스레드가 차단되지 않게 함으로써(Non-Blocking) 클라이언트에게 즉각적으로 반응하도록 구성된 시스템이라고 볼 수 있음 리액티브 시스템의 특징 MEANS 리액티브 시스템에서 사용하는 커뮤니케이션 수단 Message Driven 리액티브 시스템에서는 메시지 기반 통신을 통해 여러 시스템 간..

Spring Security에서의 OAuth2 인증 OAuth 2와 JWT를 이용한 샘플 애플리케이션 구현 이번에는 Frontend와 Backend가 분리된 CSR(Client Side Rendering) 방식의 애플리케이션에 Google의 OAuth2 인증 시스템을 적용해볼 것 CSR(Client Side Rendering) 방식의 애플리케이션에 OAuth2 인증 시스템을 도입할 경우에도 마찬가지로 OAuth2 인증 시스템을 통해 인증에 성공한 사용자에 대한 자격 증명 정보를 JWT로 제공해 줄 수 있음 CSR(Client Side Rendering) 방식의 애플리케이션에 OAuth 2 + JWT를 제대로 잘 적용하기 위해서는 먼저 OAuth 2의 인증 처리 흐름과 JWT를 통한 자격 증명 정보 제공 ..

Spring Security에서의 OAuth2 인증 OAuth2 샘플 애플리케이션 구현 해당 샘플 애플리케이션은 서버 측에서 HTML을 렌더링 해주는 SSR(Server Side Rendering) 방식의 애플리케이션을 구현함 의존성 추가 OAuth2 인증을 사용하기 위해 제일 먼저 해야 할 작업은 OAuth2에 대한 의존성을 추가하는 것 ... dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-validation' implementation 'org.spri..