這裏最關鍵的就是加上@LoadBalancedapp
1 @SpringBootApplication 2 public class ConsumerMovieApplication { 3 @Bean 4 @LoadBalanced -- 若是這行代碼註釋了,則下面的controller則調不通 5 public RestTemplate restTemplate() { 6 return new RestTemplate(); 7 } 8 9 public static void main(String[] args) { 10 SpringApplication.run(ConsumerMovieApplication.class, args); 11 } 12 }
@RequestMapping("/movies") @RestController public class MovieController { @Autowired private RestTemplate restTemplate; @GetMapping("/users/{id}") public User findById(@PathVariable Long id) { // 這裏用到了RestTemplate的佔位符能力 User user = this.restTemplate.getForObject( "http://microservice-provider-user/users/{id}", -- 若是上面的@LoadBalanced 註釋了會調不通 User.class, id ); // ...電影微服務的業務... return user; } }
把@LoadBalanced註釋了,則出現的錯誤以下:ide
因此這個註解必需要在RestTemplate這個類中加上。微服務