一次Feign使用的案例

发布时间 2023-03-28 10:45:07作者: 小新超人

项目名称

projectName

Maven架构

l  ProjectName-项目名称,项目父工程

  • projectName-api-提供给外部组件使用的接口
  • common-一些基本共用的类、枚举常量等
  • modules-项目主体模块

n  projectName-business-业务基础服务(对应数据库实体类、持久层等)

n  projectName-provider-业务上层的服务(接收参数、控制层、VO等)

n  projectName-reference-项目内使用的外部组件的接口

  • start-项目启动类,以及配置等
  • tool-工具
  • view-web视图层

projectName-api

定义提供给外部的接口:xxxApi

基本的内容为:

@Api(tags = {"xxxx接口api"})
@Path("/pathX")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
@ApiImplicitParams({@ApiImplicitParam(
        name = "Token",
        value = "接口",
        dataType = "string",
        defaultValue = "11",
        paramType = "header"
)})
public interface XxxDataApi {
    /**
     * xxxx
     * @return
     */
    @POST
    @Path("/pathY")
    @ApiOperation(value = "xx接口", notes = "xx接口", tags = {"xx接口api"})
    @TokenIgnore
    XxxResponseApiDTO xxxData(ParamXxxDto paramXxxDto);
}

projectName-provider

实现projectName-api提供给外部使用的接口

使用内部的service等实现基本的业务逻辑,即书写实现业务的代码

projectNama-reference

在另一个A项目组件需要使用上面定义的外部接口时,A项目组件在projectName-reference下定义一个接口XxxDataApiClient

基本内容如下:

@FeignClient(value = "组件服务名称", path = "组件服务路径")
public interface XxxDataApiClient extends XxxDataApi {}

 

这样就可以直接在A项目中使用该接口,使用XxxDataApi内部的方法。