본문 바로가기

Reactive5

[서평 23년-21] 스프링 부트 실전 활용 마스터 독서기간_2023년 2월 26일 ~ 2023년 3월 저자_그렉 턴키스트 출간일_2021년 5월 28일 들어는 보았나 리액티브 스트림 개발. 입문자에겐 절대 비추천하는 책이다. "실전 활용"이 제목인만큼 일반적인 Spring Boot를 공부하지 않는다. WebFlux라는 라이브러리를 이용해 스트림 통신 개발을 다룬 책이다. 마치 Spring Boot가 리액티브 패러다임이 기본인 것처럼 알려준다. 친절한 설명과 따라 치기 쉬운 예제 덕분에 많은 공부가 되었다. 현직의 ㅎ도 시작 못한 백수지만 현직자가 공부하기 좋은 책같다. 음 그냥 읽어보세요! 자신이 얼마나 무지한지를 깨닫게 됩니다. 개발에 발을 담굴수록 느끼는 거지만 끝이 없다. 취업해서도 꾸준히 책 읽고 공부하는 개발자가 되어야지. 하고 싶은 건 많은데.. 2023. 5. 15.
[Spring Reactive] Spring Boot에서 R Socket 사용하기 TCP를 기반으로 하는 R소켓을 이용해서 서로 다른 시스템을 리액티브 하게 연결하는 방법을 알아보자. org.springframework.boot spring-boot-starter-rsocket 이 의존관계를 통해 다음 기능이 프로젝트에 추가된다. R소켓: 자바로 구현된 R소켓 프로토콜 리액터 네티: 네티는 리액티브 메시지 관리자 역할도 충분히 수행할 수 있다. 리액터로 감싸져서 더 강력한 서버로 만들어졌다. 스프링+잭슨: 메시지가 선택되고 직렬화되며 전송되고 역직렬화되고 파우팅되는 것은 프로토콜의 리액티브 속성만큼이나 중요하다. R소켓 서버 생성 @Service public class RSocketService { private final ItemRepository repository; // priv.. 2023. 3. 23.
[Spring Reactive] 리액티브 테스트 작성하기 스프링부트와 리액터에서는 비동기, 논블로킹 코드도 JUnit을 이용해 테스트할 수 있다. 리액티브 단위 테스트 리액티브 코드를 테스트할 때 핵심은 기능만을 검사하는 게 아니라 리액티브 스트림 시그널도 함께 검사해야 한다는 점이다. 리액티브 스트림은 onSubscribe, onNext, onError, onComplete를 말한다. @ExtendWith(SpringExtension.class) class InventoryServiceTest { InventoryService inventoryService; @MockBean private ItemRepository itemRepository; @MockBean private CartRepository cartRepository; @BeforeEach voi.. 2023. 3. 13.
[Spring Reactive] 리액티브 데이터 Repository 정의하기 리포지토리를 생성하기 앞서 도메인은 다음과 같다. public class Item { private @Id String id; private String name; private double price; private Item(){} public Item(String name, double price) { this.name = name; this.price = price; } public String getId() { return id; } } 블로킹API인 JPA를 사용하지 않지만 JPA와 매우 유사한 인터페이스가 정의되어 있다. ReactiveCrudRepository 인터페이스를 상속하면 된다. 주석 내용은 기본적으로 제공하는 메서드이다. JPA와 거의 동일하게 제공한다는 것을 알 수 있다. pub.. 2023. 3. 12.
[Spring Reactive] WebFlux를 사용해 Reactive Spring Boot 구성해보기 Spring Boot WebFlux를 사용해 리액티브 스프링을 사용할 것입니다. maven으로 빌드를 해야 해서 골치가 조금 아픕니다. (^..^) 리액티브 스트림이란? 발행자(publisher)와 구독자(subscriber) 사이의 간단한 계약을 정의하는 명세다. 트래픽을 가능한 한 빨리 발행하는 대신에 구독자가 '난 10개만 더 받을 수 있어.'라고 발행자에게 알리는 방식으로 트래픽을 제어할 수 있다. 리액터란? 리액티브 스트림은 수요 조절에 기반하고 있다. 프로젝트 리액터는 핵심 타입인 Flux를 사용해 수요 조절을 구현한다. Flux는 일련의 T 객체를 담고 있는 컨테이너다. 예시를 들자면 레스토랑에서 서빙 점원과 비슷하다고 할 수 있다. 주방에서 요리가 완성되면, 점원이 요리를 받아서 손님에게 .. 2023. 3. 8.