Rest Template 작동방식
1. 조회 Rest Template 적용
1). user-service -> UserServiceApplication.java 빈 추가
@Bean
@LoadBalanced
public RestTemplate getRestTemplate() {
return new RestTemplate();
}
2). user-service -> UserServiceImpl.java
@Override
public UserDto getUserByUserId(String userId) {
UserEntity userEntity = userRepository.findAllByUserId(userId);
if (userEntity == null)
throw new UsernameNotFoundException("User not found");
UserDto userDto = new ModelMapper().map(userEntity, UserDto.class);
// List<ResponseOrder> orders = new ArrayList<>();
/* rest Template 첫번째 사용 */
// 주문 서비스의 URL 생성
String orderUrl = String.format(env.getProperty("order_service.url"), userId);
// RestTemplate을 사용해 주문 서비스에 GET 요청을 보내고, 해당 사용자의 주문 목록을 가져옴
ResponseEntity<List<ResponseOrder>> orderListRespons =
restTemplate.exchange(orderUrl, HttpMethod.GET, null,
new ParameterizedTypeReference<List<ResponseOrder>>() {
});
// 주문 목록을 추출
List<ResponseOrder> orderList = orderListRespons.getBody();
// 가져온 주문 목록을 UserDto에 저장
userDto.setOrders(orderList);
return userDto;
}
3). 설정파일 경로 추가
// user-service -> bootstrap.yml
spring:
cloud:
config:
// config-service에 설정된 파일로 이동
uri: http://127.0.0.1:8888
// 설정된 파일에 user-service.yml 이라는 설정파일 사용
name: user-service
// config-service -> bootstrap.yml
spring:
application:
name: config-service
cloud:
config:
server:
native:
// user-service가 아래에 폴더 참조
search-locations: file:///C:/Users/PC/Desktop/project/native-file-repo
// native-file-repo -> user-service.yml
order_service:
// ORDER-SERVICE는 라우트 네임이다, 헷갈리면 유레카에 들어가서 name 확인
// %s는 동적 URL이 사용될 때 사용, 여기에서는 userId가 들어감
// String format()와 함께 사용
url: http://ORDER-SERVICE/order-service/%s/orders
2. 테스트
1). user-service 사용자 조회
2). order-service 주문 조회
고정 주소가 아닌 라우트 네임으로 접속되는걸 확인할 수 있다
'Java > Spring Boot' 카테고리의 다른 글
[MSA] Spring Cloud로 MSA를 개발해보자 10편 [Kafka-1] (0) | 2024.09.01 |
---|---|
[MSA] Spring Cloud로 MSA를 개발해보자 9편 [서비스간 통신-2] (0) | 2024.08.30 |
[MSA] Spring Cloud로 MSA를 개발해보자 7편 [설정 정보 암호화] (0) | 2024.08.28 |
[MSA] Spring Cloud로 MSA를 개발해보자 6편 [Spring Cloud Bus] (0) | 2024.08.27 |
[MSA] Spring Cloud로 MSA를 개발해보자 5편 [Config] (0) | 2024.08.26 |