From d71e0fec8f1a6141b1f033b2b34001668f14bfb1 Mon Sep 17 00:00:00 2001 From: haerong22 Date: Mon, 4 Oct 2021 21:15:48 +0900 Subject: [PATCH] spring cloud : communicate with each service - rest template --- .../orderservice/entity/OrderEntity.java | 2 +- .../userservice/UserServiceApplication.java | 8 ++++++++ .../userservice/service/UserServiceImpl.java | 18 +++++++++++++++++- 3 files changed, 26 insertions(+), 2 deletions(-) diff --git a/springcloud/order-service/src/main/java/com/example/orderservice/entity/OrderEntity.java b/springcloud/order-service/src/main/java/com/example/orderservice/entity/OrderEntity.java index 8498739d..43b89c73 100644 --- a/springcloud/order-service/src/main/java/com/example/orderservice/entity/OrderEntity.java +++ b/springcloud/order-service/src/main/java/com/example/orderservice/entity/OrderEntity.java @@ -15,7 +15,7 @@ public class OrderEntity implements Serializable { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; - @Column(nullable = false, length = 120, unique = true) + @Column(nullable = false, length = 120) private String productId; @Column(nullable = false) diff --git a/springcloud/user-service/src/main/java/com/example/userservice/UserServiceApplication.java b/springcloud/user-service/src/main/java/com/example/userservice/UserServiceApplication.java index 62a152cb..9a862c73 100644 --- a/springcloud/user-service/src/main/java/com/example/userservice/UserServiceApplication.java +++ b/springcloud/user-service/src/main/java/com/example/userservice/UserServiceApplication.java @@ -3,8 +3,10 @@ package com.example.userservice; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; +import org.springframework.cloud.client.loadbalancer.LoadBalanced; import org.springframework.context.annotation.Bean; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.web.client.RestTemplate; @SpringBootApplication @EnableDiscoveryClient @@ -18,4 +20,10 @@ public class UserServiceApplication { public BCryptPasswordEncoder passwordEncoder() { return new BCryptPasswordEncoder(); } + + @Bean + @LoadBalanced + public RestTemplate restTemplate() { + return new RestTemplate(); + } } diff --git a/springcloud/user-service/src/main/java/com/example/userservice/service/UserServiceImpl.java b/springcloud/user-service/src/main/java/com/example/userservice/service/UserServiceImpl.java index e8dafe59..0370d9b7 100644 --- a/springcloud/user-service/src/main/java/com/example/userservice/service/UserServiceImpl.java +++ b/springcloud/user-service/src/main/java/com/example/userservice/service/UserServiceImpl.java @@ -3,14 +3,20 @@ package com.example.userservice.service; import com.example.userservice.dto.UserDto; import com.example.userservice.entity.UserEntity; import com.example.userservice.repository.UserRepository; +import com.example.userservice.vo.ResponseOrder; import lombok.RequiredArgsConstructor; import org.modelmapper.ModelMapper; import org.modelmapper.convention.MatchingStrategies; +import org.springframework.core.ParameterizedTypeReference; +import org.springframework.core.env.Environment; +import org.springframework.http.HttpMethod; +import org.springframework.http.ResponseEntity; import org.springframework.security.core.userdetails.User; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.core.userdetails.UsernameNotFoundException; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.stereotype.Service; +import org.springframework.web.client.RestTemplate; import java.util.ArrayList; import java.util.List; @@ -22,6 +28,9 @@ public class UserServiceImpl implements UserService { private final UserRepository userRepository; private final BCryptPasswordEncoder passwordEncoder; + private final Environment env; + private final RestTemplate restTemplate; + private final ModelMapper mapper = new ModelMapper(); @Override @@ -41,8 +50,15 @@ public class UserServiceImpl implements UserService { .orElseThrow(() -> new UsernameNotFoundException("user not found")); UserDto userDto = mapper.map(userEntity, UserDto.class); - userDto.setOrders(new ArrayList<>()); +// userDto.setOrders(new ArrayList<>()); + String orderUrl = String.format(env.getProperty("order_service.url"), userId); + ResponseEntity> orderListResponse = + restTemplate.exchange(orderUrl, HttpMethod.GET, null, + new ParameterizedTypeReference>() { + }); + List orderList = orderListResponse.getBody(); + userDto.setOrders(orderList); return userDto; }