티스토리 뷰
HTTPInterface
Spring Boot 버전 3.0 (Spring Framework 6.0) 사용하면 HTTPInterface를 사용할 수 있습니다 .
주석이 달린 Java 인터페이스를 사용하여 원격 API 세부 정보를 간단히 표현하고 Spring이 이 인터페이스를 구현하고 교환을 수행하는 프록시를 생성하도록 할 수 있습니다.
Spring Data에서 리포지토리를 정의하는 방법과 유사합니다.
public interface NaverAccessTokenClient {
@GetExchange(
value = "https://nid.naver.com/oauth2.0/token",
accept = MediaType.APPLICATION_JSON_VALUE
)
NaverAccessTokenResponse getNaverToken(@RequestParam MultiValueMap<String, String> params);
}
@Configuration
public class NaverAccessTokenClientImpl {
@Bean
public NaverAccessTokenClient naverApiClient() {
WebClient webClient = WebClient.create();
HttpServiceProxyFactory build = HttpServiceProxyFactory.builderFor(WebClientAdapter.create(webClient))
.build();
return build.createClient(NaverAccessTokenClient.class);
}
}
HTTPInterface의 단점은 HTTP 인터페이스가 WebClient를 기반으로 하며 이를 사용하려면 WebFlux 의존성 전체를 추가해야 한다는 것입니다.
RestClient
Spring Boot 버전 3.2 (Spring Framework 6.1)에서는 새로운 동기식 HTTP 클라이언트인 "RestClient"가 도입되었습니다.
이를 통해 기존에 사용하던 WebFlux 종속성을 제거할 수 있으며, OpenFeign과 같은 추가적인 종속성이 더 이상 필요 없습니다.
@Bean
public NaverAccessTokenClient naverApiClient() {
WebClient webClient = WebClient.create();
HttpServiceProxyFactory build = HttpServiceProxyFactory.builderFor(WebClientAdapter.create(webClient))
.build();
return build.createClient(NaverAccessTokenClient.class);
}
---
@Bean
public NaverAccessTokenClient naverApiClient() {
RestClient restClient = RestClient.create();
HttpServiceProxyFactory build = HttpServiceProxyFactory.builderFor(RestClientAdapter.create(restClient))
.build();
return build.createClient(NaverAccessTokenClient.class);
}
기존에 코드에서 WebClient와 WebClientAdapter만 변경해주면 된다.
https://spring.io/blog/2023/07/13/new-in-spring-6-1-restclient
https://github.com/thdwoqor/social-login
'spring' 카테고리의 다른 글
DispatcherServlet을 어떻게 Eembeded Tomcat에 등록할까? (0) | 2023.09.28 |
---|---|
Jackson의 ObjectMapper는 Thread-safe 한가? (0) | 2023.09.27 |
RowMapper에 rowNum는 왜 필요할까? (0) | 2023.09.27 |
서버에서 OIDC(OpenID Connect)을 검증 과정 (구글 로그인) (0) | 2023.09.15 |
Spring + JPA 환경에서 Flyway 사용시 주의 사항 (0) | 2023.09.12 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- @Converter
- BasicBinder
- 구글 OpenID
- User Scenario
- @FormProperty
- DispatcherServletInitializer
- defer-datasource-initialization
- org.springframework:spring-webflux
- HTTPInterface
- Attribute Converter
- JPA SQL Injection
- java 17
- ServletContainerInitializer
- setDateFormat
- dto 위치
- ValidateException
- CreatedDate
- 구글 소셜로그인
- CreationTimestamp
- dto 검증
- HandlesTypes
- FormProperty
- entity 검증
- 유저 시나리오
- Spring Boot 3
- 유저 스토리
- 레이어드 아키텍처
- WebFlux 의존성
- feignClient
- @ElementCollection
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함