반응형

Programing/Java & Spring 39

세무민의 코딩일기 : Spring WebClient 내장 Thread에 대해 알아보자

요즘 내 속을 썩이는 부분 중 하나가 바로 WebClient 내장 Threads인데..실무에서 WebClient 내장 Thread를 사용하는게 절대로 안좋다는 의미는 아니지만내가 담당하는 서비스의 경우 어플리케이션 내 리소스 낭비를 하면 안되기 때문에 요즘 많이 공부를 하게 되었는데이 참에 한번 Spring WebClient 내장 Thread와 커스텀 방법을 한번 적어보려고 한다. 1. WebClient 내장 Thread 기본 동작/*** HTTP 요청과 응답 처리는 Netty의 이벤트 루프 스레드에서 실행*/WebClient webClient = WebClient.create("https://sg-moomin.tistory.com");Mono result = webClient.get() .uri(..

세무민의 코딩일기 : Spring WebClient doOnError와 onErrorResume 차이

doOnError와 onErrorResume은 Spring WebFlux의 WebClient와 같은 반응형 프로그래밍에서 오류를 다루는 데 사용되는 메서드인데, 목적과 동작 방식에서 차이가 있어서 간단히 소개해보려고 함doOnError로깅, 메트릭 기록, 알림 전송 등과 같이 오류가 발생했을 때 오류를 처리하지 않지만 발생했다는 사실만 감지하여 추가 작업을 수행할 수 있는 매서드즉, 오류를 처리하거나 복구하지 않고, 오류가 발생했다는 사실을 감지해 추가 작업을 수행하고 이후 오류는 스트림 아래로 그대로 전달반환 값은 없으며 보통 에러 로그를 남기기 위해 사용됨 doOnError 예시 코드WebClient webClient = WebClient.create("https://sg-moomin.tistory...

세무민의 코딩일기 : Spring WebClient에 대해 알아보자

안녕하세요 세기무민입니다. RestTemplate deprecated 된다는 걸 알고 있었으나, 따로 WebClient에 대한 포스팅을 한 적이 없던거 같아서오랜만에 한번 포스팅을 해보려고 합니다.1. Spring WebClient?Spring 프레임워크에서 제공하는 비동기 및 논블로킹 방식의 반응형 HTTP 클라이언트를 의미비동기와 논블로킹을 통해 대규모 트래픽을 효율적으로 처리가 가능하며 MSA 환경 혹은 고성능 어플리케이션에서 유용함Spring WebFlux 모듈의 일부이며, 기존 Restemplate를 대체하기 위해 설계됨 2. Spring WebClient vs RestTemplate특징WebClientRestTemplate동작 방식비동기, 논블로킹동기, 블로킹기반 기술WebFlux (반응형)S..

[Spring] QueryDsl, java17 Q파일 생성 안되는 이슈 해결

회사에서 업무를 수행하다가 Q파일이 생성이 안되서 원인을 분석했고, 나처럼 멍청한.. 실수하지 않았으면 하는 마음에 끄적여 보려고 한다. 원인 및 분석블로그 포스팅에서 해결 방안에 대해서 나 또한 다 시도를 해봤다. 1) build.gradle 의존성 주입 및 경로 설정 (유지)기존에 사용하던 코드와 동일하여 별도 설정하지 않음 2) Intelij > 프로젝트 구조 > QClass가 존재하는 디렉토리를 source로 설정(변화 없음)기존에 이미 설정되어 있음 3) Intelij > Setting > Build > gradle > 빌드 설정(Gradle -> Intelij) 변경 (시도하지 않음) 근본적인 Q파일 생성에는 영향을 주지 않는 설정 또한 변경하더라도 파일 생성 위치가 바뀌는 것으로 별도 시도하..

[JPA&QueryDSL] QueryDsl이란 무엇인가?

서론Spring Boot 프로젝트를 개발 및 운영하다보면 MyBatis라는 라이브러리를 사용해서 쿼리를 DB로 요청할 수 있으나 최근 들어서 JPA를 이용하는 서비스가 많아지고 있는 추세이다. 쿼리 운영 유지보수 측면에서 고려해봤을 때 복잡한 쿼리가 많은 경우 Native Query를 활용하지 않고 MyBatis 라이브러리를 사용하는 경우도 종종 있다.JPA에서 제공하는 쿼리 메소드를 사용해도 기본적인 CRUD의 경우 어렵지 않다. 다만 복잡한 쿼리 혹은 요구사항에 따라 JPA에서 제공해주는 인터페이스로 활용이 어려울 경우 QueryDSL을 사용하게 된다.인터페이스로만 구현할 경우 복잡성과 유지보수 측면에서 효율적이지 못함(가독성이 떨어짐) 이에 따라 Spring Boot 프로젝트에 QueryDSL을 함..

반응형