1) 새로운 Sequence를 생성Creating 하고자 할 경우
-just()
-⭐ fromStream()
-⭐ fromIterable()
-fromArray()
-range()
-interval()
-empty()
-never()
-defer()
-using()
-generate()
-⭐ create()
2) 기존 Sequence에서 변환작업Transforming이 필요한 경우
-⭐ map()
-⭐ flatMap()
-⭐ concat()
-collectList()
-collectMap()
-merge()
-⭐ zip()
-then()
-switchIfEmpty()
-and()
-when()
3) Sequence 내부의 동작을 확인Peeking 하고자 할 경우
-doOnSubscribe
-⭐doOnNext()
-doOnError()
-doOnCancel()
-doFirst()
-doOnRequest()
-doOnTerminate()
-doAfterTerminate()
-doOnEach()
-doFinally()
-⭐log()
4) Sequence에서 데이터 필터링Filtering이 필요한 경우
-⭐filter()
-ignoreElements()
-distinct()
-⭐take()
-next()
-skip()
-sample()
-single()
5) 에러를 처리Handling errors하고자 할 경우
-⭐error()
-⭐timeout()
-onErrorReturn()
-onErrorResume()
-onErrorMap()
-doFinally()
-⭐retry()
1) 새로운 Sequence를 생성creating 하고자 할 경우
-fromStream
:Java의 Stream을 입력으로 전달받아 emit하는 Operator
:ex.
import reactor.core.publisher.Flux;
import java.util.stream.Stream;
/**
* fromStream() 기본 예제
*/
public class FromStreamExample01 {
public static void main(String[] args) {
Flux
.fromStream(Stream.of(200, 300, 400, 500, 600)) // (1)
.reduce((a, b) -> a + b) // (2)
.subscribe(System.out::println);
}
}
:결과
2000
-fromIterable()
:Java의 Iterable을 입력으로 전달받아 emti하는 Operator
:List, Map, Set 등의 컬렉션을 fromIterable()의 파라미터로 전달할 수 있음
:ex.
import com.codestates.example.operators.sample_data.SampleData;
import lombok.extern.slf4j.Slf4j;
import reactor.core.publisher.Flux;
import java.util.List;
import java.util.stream.Stream;
/**
* fromIterable() 기본 예제
*/
@Slf4j
public class FromIterableExample01 {
public static void main(String[] args) {
Flux
.fromIterable(SampleData.coffeeList)
.subscribe(coffee -> log.info("{} : {}", coffee.getKorName(), coffee.getPrice()));
}
}
:결과
09:48:25.328 [main] INFO com.codestates.example.operators.create.FromIterableExample01 - 아메리카노 : 2500
09:48:25.329 [main] INFO com.codestates.example.operators.create.FromIterableExample01 - 카페라떼 : 3500
09:48:25.329 [main] INFO com.codestates.example.operators.create.FromIterableExample01 - 바닐라 라떼 : 4500
09:48:25.329 [main] INFO com.codestates.example.operators.create.FromIterableExample01 - 카라멜 마끼아또 : 5500
09:48:25.329 [main] INFO com.codestates.example.operators.create.FromIterableExample01 - 에스프레소 : 5000