这里最关键的就是加上@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这个类中加上。微服务