SpringCloud學習筆記(六、SpringCloud Netflix Feign)


目錄:

  • feign簡介
  • feign應用

feign簡介:

feign是一款Netflix開源的聲明式、模板化的http客戶端,它可以更加便捷、優雅的調用http api;SpringCloud對Netflix的feign進行了增強,使其支持spring並整合了ribbon、eureka以提供負載均衡的http調用。

feign應用:

1、引入openfeign依賴

1 <dependency>
2     <groupId>org.springframework.cloud</groupId>
3     <artifactId>spring-cloud-starter-openfeign</artifactId>
4 </dependency>

2、啟動類加上feign注解(需要eureka的支持,所以此模塊首先需要為eureka客戶端)

)第一種,針對類掃描feign api

@EnableFeignClients(clients = {Xxx1.class, Xxx2.class})

)第二種,針對包掃描feign api

@EnableFeignClients(basePackages = {"com.xxx.xxx"})

3、定義feign api

feign api只需與模塊的api保持一致就可以了

)模塊:

1 @RestController
2 @RequestMapping("/ad")
3 public class AdApi {
4 
5     @GetMapping("/getUserAd/{account}")
6     public String getUserAd(@PathVariable(name = "account") String account) {
7         return "這是" + account + "的廣告";
8     }
9 }

)feign api:

1 @FeignClient(name = "ad-model")
2 public interface AdRemoteService {
3 
4     @GetMapping("/ad/getUserAd/{account}")
5     String getUserAd(@PathVariable(name = "account") String account);
6 }

4、調用

調用方式很簡單,就像調用方法一樣就可以了

 1 @Autowired
 2 private AdRemoteService adRemoteService;
 3 
 4 @GetMapping("/login/{account}/{password}")
 5 public String login(@PathVariable String account, @PathVariable String password) {
 6     UserDTO userDTO = USER_INFO.get(account);
 7     if (userDTO == null) {
 8         return "FAILED";
 9     }
10 
11     boolean result = userDTO.getPassword().equalsIgnoreCase(password);
12     if (!result) {
13         return "FAILED";
14     }
15 
16     // 調用廣告接口
17     String adResult = adRemoteService.getUserAd(account);
18     System.err.println(adResult);
19 
20     return "SUCCESS";
21 }


免責聲明!

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



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