반응형
Recent Posts
Recent Comments
«   2024/05   »
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
Tags
more
Archives
Today
Total
관리 메뉴

Real Vectorism. 훨씬 더 입체적으로...

Mono에 대한 궁금증 본문

Java (based by Spring Boot 2)

Mono에 대한 궁금증

grast 2021. 6. 28. 20:35
반응형

아직 웹플럭스는 포기하지 않았다. 그런데 ReactiveUserDetailsService 를 구현하다가 문득 생각이 들었다.

혹시나 Mono<UserDetails> findByUsername(String username) 메소드를 작성하는 과정이 무슨 차이가 있을까

 

public Mono<UserDetails> findByUsername(String username) {
    return Mono
            .just(username)
            .map(item -> (UserDetails) seumUserRepository.findOne(Example.of(new SeumUserDetails(item))))
            .switchIfEmpty(Mono.error(new Exception()));
}
public Mono<UserDetails> findByUsername(String username) {
    return Mono
            .just(username)
            .map(SeumUserDetails::new)
            .map(Example::of)
            .map(seumUserRepository::findOne)
            .map(item -> (UserDetails) item)
            .switchIfEmpty(Mono.error(new Exception()));
}

 

 

아래 표는 뫼비우스의 띠 처럼 계속 순환해서 갈등하게 만드는 포인트

포인트 윗 소스코드 아랫 소스코드
map 함수 호출빈도 findByUsername(String username) 자체가 0~1건을 반환하는 대량처리 메소드가 아니기 때문에 호출횟수를 줄여야한다 ReactiveUserDetailsService 자체가 대량요청이 아니더라도 대량요청을 대비하기 위해 UserDetailsService에서 분리된 인터페이스임을 감안하면 함수식으로 처리해야한다
자바 표준문법 과도한 람다식 표현법 사용이다. 표준문법인지 아닌지 확실하지 않은 문법의 과도한 사용으로 부작용이 초래되니 사용해서는 안된다. 표준문법이라고 정의하는 기준이 1.8 기준이라면 헌재 자바15까지 나온 시점에서 오래된 표준이다. 쓰라고 만든 문법인데 결과가 동일하다면 안쓸 이유가 없다.

 

반응형

'Java (based by Spring Boot 2)' 카테고리의 다른 글

웹플럭스 미치겠다  (0) 2021.07.18
아니 잠깐  (0) 2021.07.10
R2DBC 안해...!  (0) 2021.06.22
스프링 부트에서 R2DBC 사용해보기  (0) 2021.04.16
마이크로서비스 개발이 어렵긴 하다  (0) 2021.02.14
Comments