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定义与实现写在一起可以吗
写在前面:
你的疑问很正常,但是我建议你以后这种问题不需要提问,心里批评一下前开发人员就行了。
首先你提出这个问题的思路,是建立在你手上的项目做法正确,但是我(也就是你)不清楚为什么要这么做。
那么这种思路我认为应该调整一下,抱着批判的眼光去看待这些项目,实际上大多数的项目有着各种奇奇怪怪的毛病。
回答疑问
但是你这个项目情况下看来,如果不是有请求量特别大想要提高吞吐量的需求,那么确实没有必要,就算分开为了提高吞吐量,也有 spring cloud gateway 这个更好的选择。