#25 user-service: apply feign client
This commit is contained in:
@@ -31,6 +31,7 @@ dependencies {
|
||||
implementation 'org.springframework.cloud:spring-cloud-starter-config'
|
||||
implementation 'org.springframework.cloud:spring-cloud-starter-bootstrap'
|
||||
implementation 'org.springframework.cloud:spring-cloud-starter-bus-amqp'
|
||||
implementation 'org.springframework.cloud:spring-cloud-starter-openfeign'
|
||||
|
||||
implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client'
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-7.1.1-bin.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
|
||||
@@ -4,12 +4,14 @@ 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.cloud.openfeign.EnableFeignClients;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
|
||||
import org.springframework.web.client.RestTemplate;
|
||||
|
||||
@SpringBootApplication
|
||||
@EnableDiscoveryClient
|
||||
@EnableFeignClients
|
||||
public class UserServiceApplication {
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
package com.example.userservice.client;
|
||||
|
||||
import com.example.userservice.vo.ResponseOrder;
|
||||
import org.springframework.cloud.openfeign.FeignClient;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@FeignClient("order-service")
|
||||
public interface OrderServiceClient {
|
||||
|
||||
@GetMapping("/order-service/{userId}/orders")
|
||||
List<ResponseOrder> getOrders(@PathVariable String userId);
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.example.userservice.service;
|
||||
|
||||
import com.example.userservice.client.OrderServiceClient;
|
||||
import com.example.userservice.dto.UserDto;
|
||||
import com.example.userservice.entity.UserEntity;
|
||||
import com.example.userservice.repository.UserRepository;
|
||||
@@ -30,6 +31,7 @@ public class UserServiceImpl implements UserService {
|
||||
private final BCryptPasswordEncoder passwordEncoder;
|
||||
private final Environment env;
|
||||
private final RestTemplate restTemplate;
|
||||
private final OrderServiceClient orderServiceClient;
|
||||
|
||||
private final ModelMapper mapper = new ModelMapper();
|
||||
|
||||
@@ -52,12 +54,21 @@ public class UserServiceImpl implements UserService {
|
||||
UserDto userDto = mapper.map(userEntity, UserDto.class);
|
||||
// userDto.setOrders(new ArrayList<>());
|
||||
|
||||
String orderUrl = String.format(env.getProperty("order_service.url"), userId);
|
||||
ResponseEntity<List<ResponseOrder>> orderListResponse =
|
||||
restTemplate.exchange(orderUrl, HttpMethod.GET, null,
|
||||
new ParameterizedTypeReference<List<ResponseOrder>>() {
|
||||
});
|
||||
List<ResponseOrder> orderList = orderListResponse.getBody();
|
||||
/**
|
||||
* rest template
|
||||
*/
|
||||
// String orderUrl = String.format(env.getProperty("order_service.url"), userId);
|
||||
// ResponseEntity<List<ResponseOrder>> orderListResponse =
|
||||
// restTemplate.exchange(orderUrl, HttpMethod.GET, null,
|
||||
// new ParameterizedTypeReference<List<ResponseOrder>>() {
|
||||
// });
|
||||
// List<ResponseOrder> orderList = orderListResponse.getBody();
|
||||
|
||||
/**
|
||||
* feign client
|
||||
*/
|
||||
List<ResponseOrder> orderList = orderServiceClient.getOrders(userId);
|
||||
|
||||
userDto.setOrders(orderList);
|
||||
return userDto;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user