一、下面步驟是實現feign遠程服務調用
1、服務器-提供者
//服務器-提供者(provider),項目ID:user-service @RestController @RequestMapping("user") class UserController implements UserFacade{ @Autowired @Qualifier("userServiceImpl") UserService userService; @RequestMapping("getUserById") @Override public User getUserById(@RequestParam("userId") String userId) { return userService.getUserById(userId); } @RequestMapping("saveUser") @Override public User saveUser(@RequestBody User user) { return userService.saveUser(user); } } interface UserService { User getUserById(String userId); User getUserByUserName(String userName); User saveUser(User user); } @Service class UserServiceImpl implements UserService { @Override public User getUserById(String userId) { System.out.println("根據用戶ID獲取用戶對象"); return null; } @Override public User getUserByUserName(String userName) { System.out.println("根據用戶名獲取用戶對象"); return null; } @Override public User saveUser(User user) { System.out.println("保存用戶對象"); return null; } }
2、客戶端-消費者
注釋:product-service在此處是充當消費者角色,當它對外提供服務也可以充當提供者。所有一個服務既可以是提供者也可以是消費者。提供者與消費者可以相互調用
//客戶端-消費者(consumer),項目ID:product-service //客戶端消費提供端提供的用戶查詢和保存功能 /** * @ClassName ProductController * @Description feign的調用 * @Author Neal * @Date 2019/4/29 14:47 * @Version 1.0 */ @RestController @RequestMapping("product") class ProductController{ @Autowired private UserFeign userFeign; @RequestMapping("getUserProduct") public String getUserProduct(@RequestParam("userId") String userId) { //遠程調用獲取用戶數據 User user = userFeign.getUserById(userId); //下面獲取用戶購買產品代碼省略.... return null; } } //遠程調用接口 @FeignClient(name = "user-service") interface UserFeign extends UserFacade{ //這方法可以省略,因為集成接口了 @GetMapping(value = "/user/getUserById",consumes = MediaType.APPLICATION_JSON_VALUE) User getUserById(String userId); //這方法可以省略,因為集成接口了 @PostMapping(value = "/user/saveUser",consumes = MediaType.APPLICATION_JSON_VALUE) User saveUser(@RequestBody User user); }
3、公共接口部分
//公共接口(提供端和消費端都依賴的接口) interface UserFacade { @GetMapping(value = "/user/getUserById",consumes = MediaType.APPLICATION_JSON_VALUE) User getUserById(String userId); @PostMapping(value = "/user/saveUser",consumes = MediaType.APPLICATION_JSON_VALUE) User saveUser(@RequestBody User user); }
4、配置
4.1、客戶端pom.xml添加依賴jar
在客戶端pom.xml文件中,增加相關依賴 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency>
5、測試步驟
項目啟動順序:register(注冊中心) -> provider(提供者:user-service) -> consumer(消費者:product-service) 啟動完成后查看服務是否已經注冊上注冊中心:http://localhost:9090