微服务开发
可以存在多个同名FeignClient,或者说同一个服务的接口可以写在不同的文件,需要添加contextId属性(当前容器唯一)@FeignClient(contextId = "fdsa", ...)
,或者yml中添加spring.main.allow-bean-definition-overriding: true
说明:contextId存在时,会使用该值作为实例名,否则会使用name值,contextId仅覆盖实例名,并不会覆盖serviceId。
@FeignClient的公共路径可以提取到path中或者结合RequestMapping注解
@FeignClient(value = "xia-tenant",path = "/api")
结合RequestMapping注解时需要注意:
@FeignClient使用fallback的时候类上不能加RequestMapping注解,而使用fallbackFactory的时候是可以的。
@FeignClient(value = "xia-tenant", fallback = XnTenantService1Fallback.class)
@RequestMapping("/bossDept/{api}")
public interface XnTenantService1 {
/**
* < 查看部门下拉框 >
*/
@PostMapping("/getDeptListSelect")
ReturnT<List<BossDeptVO>> getDept(@PathVariable int api);
}
Caused by: java.lang.IllegalStateException: Ambiguous mapping. Cannot map 'com.xianniu.standard.feign.api.XnTenantService1' method
com.xianniu.standard.feign.api.XnTenantService1#getDept(int)
to {POST /bossDept/{api}/getDeptListSelect}: There is already 'xnTenantService1Fallback' bean method
com.xianniu.standard.feign.api.XnTenantService1Fallback#getDept(int) mapped.