[WebFlux]자주 사용하는 연산자 정리(1) [WebFlux]자주 사용하는 연산자 정리(2) - buffer [WebFlux]자주 사용하는 연산자 정리(3), 그리고 [WebFlux]자주 사용하는 연산자 정리(4) + 목차 마지막으로 연산자를 정리한 게 벌써 거의 세 달 전이다. 회사에 들어와 웹플럭스로 개발을 하며 정리하고 싶은 건 산더미 같았지만 다른 공부할 것이 너무 많고 바쁜 데다가 프로젝트까지 겹쳐 전혀 정리를 하지 못했다. 그래서 오랜만에 돌아온 연산자 정리 시간. 웹플럭스 연산자 사전이라도 있으면 좋겠다. defer() defer 연산자는 Mono와 Flux 둘 모두에서 사용가능한 연산자이다. 이 연산자는 리액티브 프로그래밍에서 지연 평가(Lazy Evaluation)를 수행하기 위한 연..
[WebFlux]자주 사용하는 연산자 정리(1) [WebFlux]자주 사용하는 연산자 정리(2) - buffer [WebFlux]자주 사용하는 연산자 정리(3), 그리고 목차 WebFlux Operators [WebFlux]자주 사용하는 연산자 정리(1) [WebFlux]자주 사용하는 연산자 정리(2) - buffer [WebFlux]자주 사용하는 연산자 정리(3), 그리고 글의 순서는 연산자의 중요도나 로직의 흐름과는 아무 관련이 없다. 그저 내가 코드를 읽다가 마주친 순서를 마구잡이로 적어놓은 메모장에 근거할 뿐. 글 제목에 '+'가 붙어있는 이유는 연산자가 아니더라도 처음 봤거나 알아야 할 것 같은 경우라 판단이 들면 이 글에 같이 추가해 버렸기 때문이다. 굳이 연산자와 그 외 클래스를 나누어야 할..
목차 지금 진행하고 있는 과제전형에서 웹플럭스+R2DBC+MySQL을 이용해 프로젝트를 구성하게 되었다. 리액티브한 디비는 몽고만 써본 터라 초기 설정에 아주 조금 시간이 소요되었는데, 결론부터 말하자면 리액티브 몽고 디비에 비해 R2DBC는 다소 허접하고 덜 만들어진 느낌을 지울 수가 없었다. 그래도 좋아지겠지.. 하며 내가 구성해둔 기본의 기본 설정을 기록. R2DBC R2DBC는 Reactive Relational Database Connectivity의 약자로, 리액티브 프로그래밍 모델을 기반으로 한 관계형 데이터베이스 연결을 제공하는 라이브러리이다. 2018년 5월에 처음 공개되었으며, 기존의 JDBC 방식으로 접근 가능하면서도 비동기/논블로킹을 지원한다는 장점이 있다. 따라서 당연히 고성능, ..
처음 써보는 웹플럭스에 처음 써보는 리액티브 몽고+레디스를 사용해 마이그레이션을 시도할 때 가장 먼저 당황한 부분이 바로 이 부분이다. MVC패턴에선 당연히, 아주 손쉽게 이루어졌던 이 함수형 엔드포인트를 사용하는 웹플럭스에서는 작동하지 않았던 것. 물론 내 경험의 산물이라 100% 확신할 수는 없지만, 여태까지 내가 알기론 함수형 엔드포인트에서 기존의 방식대로 간편하게 유효성 검증을 하는 방법은 없다, 혹은 다른 라이브러리를 불러서 사용해야 한다. 아이 그럼 어쩌라고? 에 대해 헤매면서 얻은 답을 정리한다. Validator 결론부터 말하자면, 웹플럭스에서는 검증이 필요한 클래스(DTO와 같은)마다 개별 검증 클래스를 구현해야 한다. 따라서 CRUD에 따라 검증 로직이 다르고 복잡하다면, 패키지 안에 ..
목차 웹플럭스로 개발을 하는 방법은 크게 두 가지로 나뉜다. 기존의 엔드포인트 패턴 활용 함수형 엔드포인트 사용 물론 두 가지 방법 다 비동기 처리를 구현할 수 있고, 초심자 입장에선 뭐가 더 나은 방식이라고 말할 수 없다. 그래도 이왕 웹플럭스를 사용하는 김에 함수형 엔드포인트를 적용해 보자! 하고 한 달 정도 삽질을 한 뒤에 느낀 점을 정리하기 위해 이 글을 적는다. 결론부터 말하면 일단 적응하고 나면 일반 엔드포인트보다 훨씬 직관적인 코드 작성이 가능하다. Router 함수형 엔드포인트를 사용하려면 라우터 클래스의 작성이 필수적이다. 라우터는 이름 그대로 매핑하는 역할을 하는데, 여기서 매핑이란 URL 패턴과 핸들러메서드의 매핑을 가리킨다. 즉 사용자의 요청이 라우터를 거쳐 해당 엔드포인트의 핸들러..
JWT를 이용한 로그인 자체는 쉽게 구현했으나, 로그인 한 정보를 핸들러메서드에서 불러오는 방법을 몰라 며칠을 고민했던 기억이 있다. 어쨌거나 결국 찾긴 찾았고, 더 좋은 방법을 지금도 틈틈히 찾고 있지만 아직까진 발견할 수가 없다. 로그인 구현은 시간이 나면 정리하기로 하고, 웹플럭스에서 사용자 정보를 가져오는 코드는 아래와 같다. public Mono getCurrentUser() { return ReactiveSecurityContextHolder.getContext() .map(SecurityContext::getAuthentication) .map(Principal::getName) .switchIfEmpty(Mono.error(new UserNotFoundException())) .flatMa..
2014년 9월 16일에 발행됨. (v2.0) 다른 분야에서 활동하는 조직들은 유사한 소프트웨어를 구축하기 위한 패턴들을 독립적으로 발견하고 있습니다. 이러한 시스템은 보다 견고하고, 탄력적이며, 유연하며 현대적인 요구사항을 반영하기 좋은 위치에 있습니다. 이런 변화는 최는 몇 년간의 급격한 애플리케이션 요구사항의 변화에서 기인합니다. 불과 몇 년 전까지만 해도 거대한 애플리케이션은 수십 개의 서버로 구성되어, 몇 초의 응답 시간과 몇 시간의 오프라인 유지보수를 허용하고, 기가바이트 데이터를 담고 있었습니다. 오늘날의 애플리케이션은 모바일 기기에서 부터 수천 개의 멀티 코어 프로세서에서 동작하는 클라우드 기반의 클러스터까지, 모든 기기에 배포되고 있습니다. 사용자는 밀리초의 응답 시간과 100%의 가동률..
- Total
- Today
- Yesterday
- 면접 준비
- 맛집
- 알고리즘
- 스트림
- Algorithm
- java
- 유럽여행
- 세계여행
- 리스트
- 중남미
- 칼이사
- 야경
- 유럽
- 세모
- Python
- RX100M5
- 백준
- 파이썬
- 지지
- 스프링
- 자바
- BOJ
- 기술면접
- a6000
- 동적계획법
- 남미
- Backjoon
- 여행
- spring
- 세계일주
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |