외부 API 비동기 호출로 성능 개선하기
·
Spring
외부 API를 비동기로 호출해볼까여행 코스 설계 API는 두 종류(구글, 오디세이)의 외부 API를 호출하고 있다. 이때 구글 API는 최대 5번, 오디세이 API는 최대 4번 호출된다. 성능 개선의 목적을 가지고, 기존 동기 방식으로 호출하고 있던 외부 API를 비동기로 호출해보았다.  속도 제한 필요병렬 호출구글 APIx→ 가능오디세이 APIo(대략 200ms)→ 불가능호출 속도 제한 이슈로 인해 오디세이 API는 기존의 동기 호출 방식을 유지했다.  동기 호출 vs 비동기 호출newCachedThreadPool 을 이용하여 구글 API를 비동기로 호출하도록 했다.var futures = IntStream.range(0, n) .mapToObj(index -> executor.su..
webFlux 의존성 추가
·
Spring/webflux
implementation 'org.springframework.boot:spring-boot-starter-webflux'를 추가하면 된다.  나의 경우 해당 의존성을 추가 해주지 않았는데도,  Mono와 Flux import가 가능했다. 다음 명령어로 어찌된 영문인지 확인해보았다../gradlew dependencies --configuration runtimeClasspath org.springframework.boot:spring-boot-starter-data-redis -> 3.3.4| +--- org.springframework.boot:spring-boot-starter:3.3.4 (*)| +--- io.lettuce:lettuce-core:6.3.2.RELEASE| | ..
@ResponseBody를 이용한 응답 과정 알아보기
·
Spring
@ResponseBody@Controller 어노테이션이 있는 컨트롤러(핸들러) 메소드에서 사용 가능하다. @ResponseBody 어노테이션을 Controller method에 달아주면 메소드의 return value가 Http 응답 본문(body)에 전달된다.하지만 API를 구현할 때, 보통 @ResponseBody 보다는 @RestController를 클래스 레벨에서 사용하는 경우가 많다. @RestController@RestController 는 @Controller 를 기반으로 하는 어노테이션으로, @RestController 컨트롤러에 존재하는 모든 메서드에 @ResponseBody  를 적용한다.즉, @RestController 는 @Controller  와 @ResponseBody 를 합친..
HttpServletResponse와 HttpOutputMessage
·
Spring
ServletResponse서블릿에서 클라이언트에게 응답을 제공하기 위한 목적의 인터페이스이다. HttpServletResponse서블릿에서 Http 응답을 제공하기 위한 목적의 인터페이스이다.  HttpMessageSpring에서 Http 요청 및 응답 메시지를 다루기 위한 목적의 기본 인터페이스이다. HttpOutputMessage말그대로 HTTP output message를 위한 인터페이스이다. Http 서버 입장에서 보자. - Http request는 input message이다. 따라서  server side에서 Http 요청을 다룰 때 사용하는 인터페이스는  HttpInputMessage 를 상속 받은 ServerHttpRequest 인터페이스이다.- Http response는 output m..
서블릿에서 HTTP Response 보내기
·
Spring
서블릿에서 원하는 HTTP 응답을 보내기 위해서는 HttpServletResponse 을 설정하면 된다.TMI ✨이렇게 서블릿 중에서도 HTTP 요청과 응답을 다루는 서블릿을 HTTP servlet 이라고 부른다.서블릿은 웹 서버에서 동작하는 작은 자바 프로그램이다. 서블릿은 웹 클라이언트로부터 요청을 받고, 이에 응답하는데 다들 알다시피 일반적으로 HTTP 요청/응답을 처리하는데 사용된다. 1. setContentType()을 통해 응답할 response의 content type을 정해주자. 이때 옵션으로 인코딩 방식도 정해줄 수 있다. res.setContentType("text/html;ISO-88859-4"); 2. 응답 헤더를 지정하자. setHeader()를 이용하면 된다. res.setHea..
스프링 시큐리티 6.2 : 필터를 통한 인가 과정 살펴보기
·
Spring/스프링 시큐리티
보호되어 있는 글입니다.
실전! Querydsl - 프로젝트 환경 설정
·
Spring/QueryDSL
보호되어 있는 글입니다.
영속성 관리(ORM 표준 기술 {3} )
·
Spring
보호되어 있는 글입니다.