web 层是控制器层,主要的作用的是做交互
spi 准确来说不算一层,它是Web跟Service 通信的协议的约定,是service 接口的定义和规定。即对service 的名字,入参,出参,异常处理等的定义和规定。
service 层是业务处理层,主要作用的是对数据的操作,接口的具体实现。
web 层和service 层之间的通信具体是借助spi,即已经定义好的约定进行通信。
如图所示,web层通过Spi 定位到Service层地址,通过暴露的接口拿到具体实现方法的地址Map到对应的方法上。
对于Service ,需要将服务注册上Ereuka 注册中心,(在启动类上加EnableDiscoveryClient,通过暴露接口的方式让接口被Ereuka注册中心发现并注册)Service 和Spi 的联系是RequestMapping, Spi 通过RequestMapping 连接到Service的具体实现方法上,同时也定义了方法的入参出参命名等格式。
对于Web,client 方法上的@FeignClient(name="xxxx") 其中的xxxx就是具体实现的Service在Ereuka注册