1、首先在公共模塊demo-api中寫好接口

2、demo-api接口如下;

** “聲明式調用”就是定義一個公共的接口,由提供方來實現,消費方來調用
消費方直接注入此接口,調方法
用FeignClient注解綁定一個提供方的服務名,如
@FeignClient("SIMPLE-PROVIDER"),前提是提供方已經把服務注冊到注冊中心了
注意:
1、接口里的參數前面一定要加注解
如“@RequestParam("id") String id、@RequestBody SimpleUser user”
2、接口要符合Restful風格的規范
3、在provider中進行接口的實現,前提是provider模塊已經作為一個服務發布了。

** 服務提供方 實現服務api接口,提供服務,盡量簡潔,推薦一個類搞定 微服務分三層 原子層,服務的最底層,是服務的最小單元,往往直接操作數據庫 聚合層,把原子層的接口組織起來進行分類 應用層,調用聚合層,處理業務邏輯 本服務屬於原子層
4、對於接口的調用,消費者可以采用兩種方式
一、采用feign聲明式調用
二、采用restTemplate直接調用(有多種方式)
@RestController
public class DemoConsumerController {
@Autowired //注入聲明式調用的接口(feign)
private DemoApi api;
@Autowired //注入客戶端負載均衡調用的bean(ribbon)
private RestTemplate t;
/**
* feign聲明式調用
* @param name
* @return
*/
@RequestMapping(value="/demo/hello")
public String hello(String name) {
return api.hello("hello world !");
}
/**
* ribbon負載均衡調用
* @param name
* @return
*/
@RequestMapping(value="/demo/hello2")
public String hello2(String name) {
String result = t.getForEntity("http://DEMO-PROVIDER/demo/hello?name=test", String.class).getBody();
return result;
}
}
服務分三層 原子層,服務的最底層,是服務的最小單元,往往直接操作數據庫 聚合層,把原子層的接口組織起來進行分類 應用層,調用聚合層,處理業務邏輯 本服務屬於聚合層 + 應用層 feign方式,接口注入方式() ribbon,客戶端負載均衡方式()
5、restTemplate 對象需要在啟動類之前創建后,才可以在接口中注入,或者采用java配置類的方式

restTemplate 采用java配置類創建

RestTemplate調用服務的另外一種方法

