SpringCloud——服務呼叫及自定義配置
阿新 • • 發佈:2019-01-09
Ribbon+RestTemplate:
(一)使用方式:
- 引入ribbon依賴;
- 在啟動類中例項化restTemplate例項並注入:
@Bean
@LoadBalanced //負載均衡器,實現請求的均勻分發
RestTemplate restTemplate(){
return new RestTemplate();
}
RestTemplate相當於一個傳送http請求的客戶端,預設提供了各種傳送http請求的方法,有興趣的童鞋可以自己瞭解一下。
(二)自定義ribbon配置:
Ribbon的預設定義類是”RibbonClientConfiguration
例如請求規則、負載均衡策略等,也可以使用“@RibbonClient”註解對指定的服務採用不同的配置型別。例如:
@Configuration
public class MyRibbonConfig {
//配置ribbon為隨機請求方式
@Bean
public IRule ribbonRule(){
return new RandomRule();
}
}
----------
@Configuration
@RibbonClient(name = "service-A" ,configuration = MyRibbonConfig.class)
//為指定的服務使用指定的配置
public class TestConfiguration {
...
}
Feign
feign是一種申明式的REST服務呼叫方式,它解決了使用resetTemplate呼叫中無法傳遞多個引數的問題。
(一)使用方式:
首先需要引入feign依賴,並在啟動類上新增@EnableFeignClients註解。
- 服務提供者中定義的介面:
@RestController
@RequestMapping("/user")
public class UserController {
/**
* 方法說明:根據使用者名稱獲取使用者
* @param: 使用者名稱
* @return: user
*/
@GetMapping(value = "/username/{username}")
public User getUserByUsername(@PathVariable("username") String username){
return service.getUserByUsername(username);
}
}
2. 服務消費者中定義介面呼叫服務提供者中的服務:
//使用Feign註解指明服務提供者
@FeignClient(name = "cms-admin")
@RequestMapping("/user")
public interface UserService {
@GetMapping(value = "/username/{username}")
User getUserByUsername(@PathVariable("username") String username);
}
這樣就可以在其他地方使用UserService呼叫cms-admin服務中定義的方法了。
(三)自定義feign配置:
@Configuration
public class FeignConfiguration {
/*
@Bean
public Contract feignContract(){
return new feign.Contract.Default();
}
*/
//feign呼叫認證,需要引入對Security的依賴
@Bean
public BasicAuthRequestInterceptor basicAuthRequestInterceptor(){
return new BasicAuthRequestInterceptor("user","123456");
}
//feign日誌設定
@Bean
Logger.Level feignLogger(){
return Logger.Level.FULL;
}
}
----------
//在feign客戶端上註明使用的配置類:
@FeignClient(name = "cms-admin",configuration = FeignConfiguration.class)