1.项目中有两个模块,一个demo-api,一个demo-Service
2.在demo-api中有如下接口定义
@FeignClient(name = "demo-api", url = "${feign.client.config.demo-api.url}")
@RequestMapping("/api/demo")
public interface DemoClient {
@PostMapping("/list")
GlobalResponse<?> list(@RequestBody DemoVM vm);
}
3.在demo-Service中有接口的实现
@Slf4j
@RestController
public class DemoController implements DemoClient {
@Override
public GlobalResponse<?> list(@RequestBody DemoVM vm) {
return GlobalResponse.success(refrigerantService.getList(vm));
}
}
4.配置文件中
feign:
client:
config:
default:
connectTimeout: 3000
readTimeout: 10000
loggerLevel: full
demo-api:
url: http://demo:8080
gateway-demo-client:
url: http://spring-boot-inventory.qd-aliyun.demo.net
Authorization: 5df3a980904ac5aa3e9a1ceab4dae9aa
- com.demo.material.service.feign.interceptor.DemoFeignInterceptor
我的疑问
1.分成两个模块,在demo-api中定义接口,在demo-Service中实现接口,目的是什么,直接就一个模块不行吗,为啥要分开?
2.@FeignClient注解中,name全局搜索也没有搜到,name定义有啥用?url有啥用啊?
我看前端接口直接请求的路经就是/api/demo/list,请求已经到了本项目,再配置url感觉没有用啊?
3.gateway-demo-client有啥用,项目全局搜索也搜不到哪里用到了?
4.为啥项目都是-api,-service分成两个模块,我只写一个模块,把feign定义与实现写在一起可以吗
第一个问题:假设一个项目里有多个模块,每个模块是单独部署的微服务,例如有服务a、b、c,a通过feign调用c的接口,如果c分为api和service,那么只需要依赖c的api模块,同理b想要调用c的接口,也只需要依赖c的api模块即可
其他问题已有