若依中Feign调用的具体使用(若依微服务版自身已集成openfeign依赖,并在此基础上定义了自己的注解)
若依中Feign调用具体使用
注意:以下所有步骤实现的前提是需要在启动类上加入注解 @EnableRyFeignClients 主要是为开启feign接口扫描
1.创建服务提供者(provider)
导入依赖(我在分析依赖时发现若依本身已经引入openfeign依赖,并在此基础上自定义了自己的@EnableRyFeignClients注解,此步可省略):
service层代码如下(示例):
在服务提供者中调用servic层获取数据
//创建服务提供者
@RestController
@RequestMapping("/provider")
public class ProviderController {
@Autowired
private UserService userService;
@RequestMapping("/getUserById/{id}")
public User getUserById(@PathVariable Integer id){
return userService.getUserById(id);
}
}
2.创建feign接口
代码如下(示例):
解释都放在了代码中,可以直接复制粘贴
/**
* @FeignClient 一般采用服务名进行命名
* url: url一般用于调试,可以手动指定@FeignClient调用的地址
*
* @RequestMapping 主要用于feign框架拼接传递url,弥补了Ribbon的url需要手动拼接的缺陷
* @PathVariable("id") 当路径为restful风格时路径传参方式
* @RequestParam("id") 当路径为?id=250 时传参方式
* @RequestBody User user 当路径为对象时采用的传参方式,(集合、数组等都属于对象)
*/
@FeignClient("feign-provider")
@RequestMapping("/provider")
public interface UserFeign {
@RequestMapping("/getUserById/{id}")
User getUserById(@PathVariable("id") Integer id);
@RequestMapping("/deleteUserById")
User deleteUserById(@RequestParam("id") Integer id);//?形式拼接参数,?id=250
@RequestMapping("/addUser")
User addUser(@RequestBody User user);//pojo--->json
}
3.创建服务消费者(consumer)
//服务消费者
@RestController
@RequestMapping("/consumer")
public class ConsumerController {
@Autowired
private UserFeign userFeign;
@RequestMapping("/getUserById/{id}")
public User getUserById(@PathVariable Integer id){
return userFeign.getUserById(id);
}
}
eger id){
return userFeign.getUserById(id);
}
}
这样,当消费者调用userFeign的getUserById(id)方法时,会向当前项目路径下的/provider/getUserById/{id}发送请求.