22. Feign Client
- 📚 Spring/Spring Cloud
- 2023. 5. 28. 16:59
Feign Client
- REST Call을 추상화 한 Spring Cloud Netflix 라이브러리 이다.
사용방법
- 호출하려는 HTTP Endpoint에 대한 Interface를 생성
- @FeignClient 선언
- Load Balanced 지원
참조
- https://docs.spring.io/spring-cloud-openfeign/docs/current/reference/html/
| User-service에 Feign Client 설정
의존성 추가
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
<version></version>
</dependency>
UserServiceApplication.java
- @EnableFeignClients을 추가
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class UserServiceApplication {
public static void main(String[] args) {
SpringApplication.run(UserServiceApplication.class, args);
}
@Bean
public BCryptPasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
@Bean
@LoadBalanced
public RestTemplate getRestTemplate() {
return new RestTemplate();
}
}
OrderServiceClient.java
package com.kyhslam.userservice.client;
import com.kyhslam.userservice.vo.ResponseOrder;
import org.springframework.cloud.openfeign.FeignClient;
@FeignClient(name = "order-service")
public interface OrderServiceClient {
@GetMapping("/order-service/{userId}/orders")
List<ResponseOrder> getOrders(@PathVariable String userId);
}
UserServiceImpl.java
public UserDto getUserByUserId(String userId) {
UserEntity userEntity = userRepository.findByUserId(userId);
if (userEntity == null) {
throw new UsernameNotFoundException("User not found");
}
UserDto userDto = new ModelMapper().map(userEntity, UserDto.class);
//List<ResponseOrder> orders = new ArrayList<>();
/* Using as Rest Template */
/* String orderUrl = String.format(env.getProperty("order_service.url"), userId); //"http://localhost:8000/order-service/%s/orders";
ResponseEntity<List<ResponseOrder>> orderListResponse =
restTemplate.exchange(orderUrl, HttpMethod.GET, null,
new ParameterizedTypeReference<List<ResponseOrder>>() {
});
List<ResponseOrder> orderList = orderListResponse.getBody();*/
/* Using a Feign Client */
List<ResponseOrder> orderList = orderServiceClient.gtOrders(userId);
userDto.setOrders(orderList);
return userDto;
}
'📚 Spring > Spring Cloud' 카테고리의 다른 글
21. RestTemplate (0) | 2023.05.27 |
---|---|
19. 대칭키를 활용한 DB정보 암호화 (0) | 2023.05.27 |
18.대칭키와 비대칭키 (0) | 2023.05.15 |
16. Spring Cloud Bus (0) | 2023.05.10 |
[Error] JWT 구현 시 javax/xml/bind/DatatypeConverter 에러 대처법 (0) | 2023.05.04 |