21. RestTemplate

User-Service > UserServiceApplication.java

@LoadBalaned를 붙이면 Microservice의 name으로 사용할 수 있다. 그러면 url이 바꿔도 따로 바꿔줄 필요가 없다

@SpringBootApplication
@EnableDiscoveryClient
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();
    }
}

 

user-service > 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<>();

        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();
        userDto.setOrders(orderList);

        return userDto;
    }

native-file-repo > user-service.yml에 url정보 추가

order_service:
  url: http://ORDER-SERVICE/order-service/%s/orders

댓글

Designed by JB FACTORY