20220710 TIL&WIL
·
Memorization
이번주에 있었던 큰 변화..😢 현재 Spring MVC로 구현되어있으며, Spring Data JPA 및 QueryDSL을 활용하는 우리 어플리케이션에서 Spring MVC에서 Spring WebFlux으로의 전환은 많은 시간을 필요로 해서 고려하지 못했다. 진행하던 프로젝트에 WebClient와 RestTemplate 모두를 어플리케이션에 적용해 보고, 어느 것이 더 효율이 높을까 측정해봤다. 현재 외부 API 호출의 흐름도는 다음과 같다 각각의 호출 결과가 다음 호출의 매개변수로 사용되는 형태이다. 또한 Blocking으로 WebClient를 구현하면 WebClient의 메리트가 떨어져서 아래와 같이 Lazy Subscription을 이용하여 구현해 보았다. .bodyToMono(SomeData.cl..
20220708 TIL
·
Memorization
WebClient를 버려야 하는걸까? 😢 러닝커브가 너무 높다 허허;; 그래서 구글링하다가 찾은 Lazy Subscribe를 통한 Stream 또는 Iterable 로 변환 시킬 수 있는 Flux.toStream() , Flux.toIterable() 함수를 이용했다 내일은 위의 방식으로 구현한 WebClient와 RestTemplate을 비교해보고자 한다. 둘 중 효율이 높은 쪽을 선택할 것 같다😔 WebClient로 호출한 REST API public LocationKeywordSearchForm giveLatLngByAddressRest(String address) throws JsonProcessingException { WebClient client = WebClient.builder() .ba..
20220707 TIL
·
Memorization
벌써 실전 프로젝트가 2주나 지났다니.. 상상도 못할 일이다 뭔가 점점 컨디션도 나빠지고, 번아웃이 올랑말랑 하는 것 같다 이럴 때 일수록 쉬운 작업도 섞어줘가면서 해야 될 듯 싶다 WebClient를 꼭 Async/NonBlocking으로 처리하고 싶었는데.. 😢 일단 계속 바꿀 수 있도록 노력해야겠다 현재 WebClient를 거치고 나면 이렇게 값이 저장되고 있다. 그리고 Docker/Jenkins를 Github Action으로 전환해볼까 생각해보고 있어서 이전에 했던 코드를 정리하면서 다시 적용해보는 중이다!
20220705 TIL
·
Memorization
프로젝트 맡은 부분이 딱 내가 부족한 비동기/동기, 함수형 프로그래밍인 것 같아 좋다 😊 오늘은 Web Client에서 private 필드를 못 꺼내오는 이 상황에 대해서... 삽질을 해볼 예정이다 왜 public은 긁어오고 private은 못 긁어올까 1️⃣ bodyToMono 자체에서 class로 매핑을 하는 게 맞을지 2️⃣ bodyToMono를 String으로 가져와서 파싱하는 게 나을 지 모르겠다! 1️⃣을 적용하면서 막혀 있는데, 일단 돌아가는 2️⃣번을 확실히 정립하고 1️⃣을 테스트하면서 적용해보아야 할 듯 싶다 생각보다 해결방법이 간단했다 ㅜㅜ API 에서 던져주는 필드값이 대문자라서 발생하는 에러였다. 그리고 Non-blocking으로 구현하고 싶었으나, API끼리의 결합도가 높아서 (..
20220704 TIL
·
Memorization
지금은 WebClient + Reactive 공부중... Mono 0-1개의 결과만을 처리하기 위한 Reactor의 객체 Flux 0-N개인 여러 개의 결과를 처리하는 객체 Mono, Flux 둘 다 Reactive Stream의 Publisher Interface를 구현하고 있으며, Reactor 에서 제공하는 연산자의 조합을 통해 스트림을 표현한다 Reactor를 공부하기 위해 https://tech.io/playgrounds/929/reactive-programming-with-reactor-3/Mono 해당 예제를 통해 공부하고 있다 // TODO Return an empty Mono Mono emptyMono() { return Mono.empty(); } //===================..
20220701 TIL
·
Memorization
7월의 첫날! 7월은 토르 러브앤썬더 개봉하는날! 7월 6일를.. 기다리고있다😊 흐흐 개봉하면 보러가야징 잡설은 그만하고 오늘은 유저 상세정보를 DTO에 매핑하면서 일일이 매핑해주기 정말 귀찮다는 생각을 하고 있어서 구글링을 해 보았다! 매핑같이 단순한 작업을 반복하길 꺼려한다면 ModelMapper나 MapConstruct를 쓰는 것 같다 하지만 이렇게 라이브러리를 막 가져다 쓰는 것은 리스크가 있을 법 해 좀 더 구글링하던 와중 인프런 질답에서 https://www.inflearn.com/questions/15292 직접 매핑을 해주는 것이 컴파일 시점에 오류를 체크하는 면에서 더 낫다는 답변을 보게 되었다! 일단 스프링 고인물이 되고 나서 차근차근 써 보는게 낫겠다는 결론을 내렸다.. 허허