一、首先在公共模塊demo-api中寫好接口html
二、demo-api接口以下;java
** 「聲明式調用」就是定義一個公共的接口,由提供方來實現,消費方來調用 消費方直接注入此接口,調方法 用FeignClient註解綁定一個提供方的服務名,如 @FeignClient("SIMPLE-PROVIDER"),前提是提供方已經把服務註冊到註冊中心了 注意: 一、接口裏的參數前面必定要加註解 如「@RequestParam("id") String id、@RequestBody SimpleUser user」 二、接口要符合Restful風格的規範
三、在provider中進行接口的實現,前提是provider模塊已經做爲一個服務發佈了。數據庫
** 服務提供方 實現服務api接口,提供服務,儘可能簡潔,推薦一個類搞定 微服務分三層 原子層,服務的最底層,是服務的最小單元,每每直接操做數據庫 聚合層,把原子層的接口組織起來進行分類 應用層,調用聚合層,處理業務邏輯 本服務屬於原子層
四、對於接口的調用,消費者能夠採用兩種方式api
1、採用feign聲明式調用app
2、採用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,客戶端負載均衡方式()
五、restTemplate 對象須要在啓動類以前建立後,才能夠在接口中注入,或者採用java配置類的方式ide
restTemplate 採用java配置類建立微服務
RestTemplate調用服務的另一種方法