怎么用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這個類中加上。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM