티스토리 뷰
현재 진행중인 사이드 프로젝트에서 사용하는 WebFlux를 분석하면서 정리한 글입니다.
RequestPredicate은 함수형 인터페이스이므로 람다식 또는 메서드 레퍼런스의 할당 대상으로 사용할 수 있습니다.
package org.springframework.web.reactive.function.server;
import java.util.Optional;
@FunctionalInterface
public interface RequestPredicate {
boolean test(ServerRequest request);
default RequestPredicate and(RequestPredicate other) {
return new RequestPredicates.AndRequestPredicate(this, other);
}
default RequestPredicate negate() {
return new RequestPredicates.NegateRequestPredicate(this);
}
default RequestPredicate or(RequestPredicate other) {
return new RequestPredicates.OrRequestPredicate(this, other);
}
default Optional<ServerRequest> nest(ServerRequest request) {
return (test(request) ? Optional.of(request) : Optional.empty());
}
default void accept(RequestPredicates.Visitor visitor) {
visitor.unknown(this);
}
}
boolean test(ServerRequest request);
request에서 받은 predicate를 평가하는 메서드
and, or, negate
request에서 받은 predicate를 평가할 때 도와주는 메서드
- and : 파라미터로 받은 other에 대한 평가를 and 조건으로 처리합니다.
- or : 파라미터로 받은 other에 대한 평가를 or 조건으로 처리합니다.
- negate : 기존 predicate와 not 조건으로 처리합니다.
default Optional<ServerRequest> nest(ServerRequest request)
지정된 request을 중첩 경로에 사용되는 request으로 변환합니다.
예를 들어, path-based predicate는 일치 후에도 경로가 남아 있는 ServerRequest를 반환할 수 있습니다.
default void accept(RequestPredicates.Visitor visitor)
주어진 Visitor을 받아들입니다.
composed RequestPredicate 구현체는 이 RequestPredicates를 구성하는 모든 컴포넌트에 대한 호출을 할 것으로 예상됩니다.
RequestPredicates.Visitor
RequestPredicates의 논리 구조에서 알림을 수신합니다.
- method, queryParam, header, contentType, 논리 구조(and, or 등)와 같은 request에 해당하는 메서드가 존재합니다.
'Sping Framework' 카테고리의 다른 글
Mono [1] (0) | 2022.02.04 |
---|---|
MonoSink (0) | 2022.02.04 |
[Spring boot] 테스트 코드 작성 (0) | 2020.02.14 |
[Spring boot] Spring boot 환경 설정하기 (0) | 2020.02.11 |
[Spring] 예제로 배우는 스프링 입문 [3] 프로젝트 과제 (0) | 2020.01.16 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- kkoon9
- Spring Boot
- JPA
- AWS
- 클린 코드
- C++
- Olympiad
- 백준
- 알고리즘
- Kotlin
- 클린 아키텍처
- 이펙티브 자바
- 코테
- Effective Java
- Spring
- programmers
- 디자인패턴
- node.js
- 디자인 패턴
- MSA
- 정규표현식
- 이팩티브 자바
- Java
- 객체지향
- kotest
- BOJ
- Algorithm
- 프로그래머스
- 테라폼
- BAEKJOON
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함