본문 바로가기

전체 글86

[WebClient] WebClient 로 카카오모먼트 API 연동하기 Spring 어플리케이션에서 HTTP 요청을 할 땐 주로 RestTemplate 을 사용했었다. 하지만 Spring 5.0 버전부터는 RestTemplate 은 유지 모드로 변경되고 향후 deprecated 될 예정이므로 WebClient 쓰기를 적극 권장하고있다. (참고 https://docs.spring.io/spring-framework/reference/web/webflux-webclient.html) WebClient 는 논블로킹/블로킹 모두 지원한다.(참고로 RestTemplate는 블로킹방식이다.) 특징 싱글 스레드(코어당 1개의 스레드)와 Non-Blocking 방식 사용 높은 처리량과 확장성이 좋다. 이벤트에 반응형으로 동작(Spring React 프레임워크 사용) Reactor 기반의 .. 2023. 11. 8.
[WEB][Reactor Java] Mono와 Flux를 생성하는 방법 Reactor는 Reative Streams 명세를 기반으로 JVM에서 반응성 Non-Blocking 애플리케이션을 생성하기 위한 JAVA 라이브러리입니다. 처음에는 이 라이브러리로 작업하는것이 어려울 수 있습니다. 이 시리즈는 Mono 및 Flux 클래스를 통해 Reactor를 제공하는 Reactive Streams의 실행을 생성, 조작, 관리하는 과정을 설명합니다. Mono와 Flux는 모두 반응성 스트림이지만 표현하는 것이 다릅니다. Mono: 0개 또는 1개의 요소의 Stream Flux: 0개 ~ N개의 요소의 Stream 예를들어 HTTP 서버에 요청을 하면 응답이 없거나 한 개의 응답을 받으므로 이 경우 Flux보다는 Mono가 더 적절합니다. 반대로 어떤 구간에서 수학적인 함수의 결과를 계.. 2023. 11. 8.
[WEB] Reactive Streams Reactive Streams? 리액티브 스트림은 자바와 다른 언어에서 사용되는 프로그래밍 패러다임으로, 데이터 스트림을 논블로킹(non-blocking) 및 비동기(asynchronous) 방식으로 처리하는 데 중점을 둔다 이 접근 방식은 대량의 데이터 또는 높은 동시성 수준을 처리할 때 리소스를 보다 효율적으로 사용하고 성능을 향상시킬 수 있다 리액티브 프로그래밍은 실시간 데이터(예: 실시간 피드 또는 사용자 상호 작용)를 다룰 때 특히 유용하다. 전통적인 순차 또는 명령형 프로그래밍에서는 코드가 단계별로 실행되며, 이전 작업이 완료될 때까지 각 작업이 대기한다. 이는 I/O 바운드 작업이나 오래 실행되는 작업을 처리할 때 비효율적일 수 있다. 반면에 논블로킹(non-blocking) 실행은 작업이 .. 2023. 11. 8.
ORM(Object-Relational Mapping) ORM(Object Relational Mapping) ORM(Object Relational Mapping)이란, 객체지향 패러다임을 이용하여 데이터베이스로부터 데이터를 쿼리하고 조작할 수 있도록 해주는 기술이다. 즉, 객체와 데이터베이스를 연결(매핑)해주는 역할을 한다. ORM에 대해서 말할 때, 대부분의 사람들은 ORM 기술을 구현하는 '하나의' 라이브러리를 지칭하고 있는 것이다. 그러므로 '하나의' ORM('an' ORM)으로 표현하는 것이다. ORM 라이브러리는 우리가 사용하는 언어로 쓰인 완전히 평범한 라이브러리로, 데이터를 조작하기 위해 필요한 코드를 캡슐화 하고 있기 때문에 데이터를 조작하기 위해 더 이상 SQL 쿼리문을 사용하지 않아도 된다. 우리가 사용하고 있는 그 언어를 통해서 객체와.. 2023. 11. 8.