springcloud feign远程调用服务实践
一、下面步骤是实现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
感谢您的阅读,您的支持是我写博客动力。