OpenSource/Spring
Spring WebFlux
태하팍
2017. 4. 26. 17:40
반응형
toby님이 회사에 오셨다.
스프링캠프 2017을 등록 못해서 못갔는데 다행히 좋은 강의를 들을수 있어서 좋았다.
강의자료 :
Spring WebFlux
람다식
추가 : 구 Spring web reactive
- 용도
- 서비스간 호출이 많은 마이크로서비스 아키텍처에 적합.
- 비동기 - 논블럭킹 개발방식.
- 성능을 뛰어나게 만들겠다.
- 기존 @MVC 방식, 새로운 방식
- 서블릿 스택과 api에서 탈피
- 블록킹, 논블록킹
- 동기, 비동기와는 관점이 다름.
- 내가 직접 제어할 수 없는 대상을 상대하는 방법
- 대상이 제한적임
- IO
- 멀티 쓰레드 동기화
- 함수형 스타일의 콜백 방식
스프링 웹
1. 요청 매핑
2. 요청 바인딩
3. 핸들러 실행
4. 핸들러 결과 처리(응답 생성)
WebFlux
- Router Function - 1. 요청매핑 (.route())
- 함수형 스타일 (람다식..)
- Handler Function - 2,3,4
RouterFunction의 등록 -> @Bean으로 만든다.
and(), andRoute(), nest() 등의 유용 메소드들.
flatMap
장점
- 모든 웹 요청 처리 작업을 명시적인 코드로 작성.
- 어노테이션에 의존하는 @MVC 스타일보다 명확
- 정확한 타입 체크 가능.
- 함수 조합을 통한 편리한 구성, 추상화에 유리
- 테스트 작성의 편리함.
단점
- 함수형 스타일의 코드가 익숙치 않음.
- 기존 방식 가능
섞어서 사용 가능.
@MVC 요청 바인딩 + return Mono/Flux 사용.
WebFlux와 리액티브 기술
블로킹 IO 사용 X
JPA - JDBC 기반 RDB 연결
현재는 노답. - 블로킹 메소드로 점철된 jdbc api
JDK 10에서 Async JDBC가 등장할 수도(빠른 시간내에 적용)
@Async (적절한 쓰레드풀을 사용)
단, MongoDB, Redis, CouchDB등 Async 가능.
Spring5 함수형 스타일..
ReactiveStreams
RxJava를 비롯한 다양한 리액티브 기수에 적용된 표준 인터페이스
자바9에 Flow api로 포함.
뭘 공부해야하나?
java8 + 함수형 프로그래밍에 익숙해질 것.
Completablefuture와 같은 비동기 작업의 조합, 결합에 뛰어난 툴에 사용법을 익힐 것.
ReactorCore 학습
열심히 공부하자+ㅁ+ㅋㅋ
반응형