怎么用spring cloud service-id 进行调用接口

 

 

 

这里最关键的就是加上@LoadBalanced

 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注释了,则出现的错误如下:

 

 所以这个注解必须要在RestTemplate这个类中加上。

 

posted @ 2019-04-11 21:08  技术让世界更精彩  阅读(1146)  评论(0编辑  收藏  举报