fegin主要提供的功能就是,微服务下需要远程调用,使用feign进行一个注入。
前提是服务都在注册中心注册后可进行调用
(个人理解就是给其他模块的东西弄到自己模块当个本地类使用)
//feign的一个service 可以在这个feign的业务controller使用implements中进行一个接口的实现
@FeignClient(name = "order-service", configuration = FeignInterceptor.class, path = "/order")
public interface OrderServiceFeign {
/**
* 获取订单装货状态
* @RequestParam id
* @return
*/
@RequestMapping(method = RequestMethod.GET,value = "/getStatus")
Map<Long,Integer> getLoadingStatus(@RequestParam(value = "ids") List<Long> ids);
}
//假如我有个controller 叫 oc-->注意feign的 path一定要和 controller的 路径值相同 (本文都是/order)
//不然会报错找不到方法的。fegin没有错误的话可以通过fegin的地址进行接口访问也可以直接访问controller进行测试。
@RestController
@RequestMapping("/order")
oc implements OrderServiceFeign
{
@Override
Map<Long,Integer> getLoadingStatus(@RequestParam(value = "ids") List<Long> ids){
处理业务
}
}
调用之前A一定要被B引入
<dependency>
<groupId>com.taohua</groupId>
<artifactId>order</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
外部服务调用就直接在需要的地方注入就可以
@Autowired
private OrderServiceFeign orderServiceFeign
//就可以当本地类使用