前提:建立好eureka-server,一套provider-consumer,注冊到Eureka注冊中心。
一、Feign實作聲明式REST調用
1.Feign簡介
HTTP用戶端
聲明式、模闆化
支援Spring MVC注解
Feign是Netflix開發的聲明式,模闆化的HTTP用戶端,其靈感來自Retrofit,JAXRS-2.0以及WebSocket.
- Feign可幫助我們更加便捷,優雅的調用HTTP API。
- 在SpringCloud中,使用Feign非常簡單——建立一個接口,并在接口上添加一些注解,代碼就完成了。
- Feign支援多種注解,例如Feign自帶的注解或者JAX-RS注解等。
- SpringCloud對Feign進行了增強,使Feign支援了SpringMVC注解,并整合了Ribbon和Eureka,進而讓Feign的使用更加友善。
2.Feign實作微服務接口調用
準備
注冊兩個微服務:Provider和Consumer
實作Consumer對Provider的接口調用
2.1 Provider建立服務方法
在provider 中添加UserService類,提供login()方法
@RestController
public class Userservice {
@RequestMapping(value = "/login")
public String login(){
return "登入成功1";
}
}
2.2 Consumer進行調用準備
在consumer項目pom中添加Feign依賴
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-feign</artifactId>
<version>1.3.5.RELEASE</version>
</dependency>
2.3 consumer添加client、service、controller類
(因為使用的是feign元件,是以consumer不能直接調provieder,要通過client類來進行調用)
2.4 編寫client類
client中的接口是和provider項目中Controller類的接口一樣:就Url和參數清單一樣就可以, 其他的可以不一樣。
為接口添加@FeignClient注解并指定name屬性值為provider項目的名稱。
@FeignClient(name = "eureka-provider-demo",fallback = UserFallBack.class)
public interface UserClient {
@RequestMapping(value = "/login")
public String login();
}
2.5 consumer中建立的UserServicImpl類調用userClient。
consumer中的Controller類調用service。
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserClient userClient;
@Override
public String login() {
return userClient.login();
}
}
@RestController
public class UserController {
@Autowired
private UserService userService;
@RequestMapping(value = "/login")
public String login(){
return userService.login();
}
}
2.6 consumer項目的啟動類添加注解:@EnableDiscoveryClient、@EnableFeignClients
2.7 通路provider中接口的URL和consumer中接口的URL,成功。
内容太多了 我做了子產品内容分離,springcloud的5個元件:feign、hystrix、ribbon、zuul、config都有博文分别介紹,如有需要請檢視:
springcloud元件之一:feign(client)
springcloud元件之二:hystrix(容錯&Hystrix處理容錯&Feign項目的監控&Hystrix Dashboard可視化監控&Turbine聚合監控)
springcloud元件之三:Ribbon(輪詢和随機負載)
springcloud元件之四:Zuul(zuul網關&網關過濾器)
springcloud元件之五:Config實作分布式配置