从应用服务批量生成Controller和Client

更新时间:
复制 MD 格式

您可以从应用服务快速生成Client层代码以及Controller层代码,BizWorks Toolkit支持生成DDD四层架构代码,暂不支持生成MVC三层架构。本文介绍如何从应用服务批量生成ControllerClient,以及相应的生成规则和示例。

生成规则

  • BizWorks Toolkit会根据项目结构将其区分为一级Module项目或二级Module项目,根据平台生成代码规则将代码生成到相应位置,若ClientController已经存在,则会对缺少的内容进行补充。

  • 若应用服务参数大于一个,BizWorks Toolkit则会按照平台规则,在Client以及Controller中创建一个名为应用服务名+方法名Dto作为参数。

  • 方法重载时:

    • BizWorks Toolkit会将Dto命名为应用服务名+方法Method注解中Code

    • 如果在已有的重载方法中添加或删除了参数,BizWorks Toolkit会在Controller中添加方法,且旧方法不会删除,需手动调整。

    • 已有的重载方法参数个数与名称未改变,仅修改了参数类型,则BizWorks Toolkit不会在Client以及Controller中新增方法,而是会修改Dto中字段类型。

操作步骤

  1. 打开IDEA。

  2. 在应用服务层单击右键,选择BizWorks > 生成Controller以及Client

生成代码示例

应用服务
/**
 * 测试应用服务
 *
 * @author bizworks: daily_test
 * @date 20xxx
 */
@ApplicationService(domain = "TestDomain", name = "应用服务")
public interface TestApplication {
    @Method(code = "getUserList", name = "getUserList", desc = "getUserList")
    @ReturnValue("List<Object>")
    List<Object> getUserList();
    @Method(code = "getUser", name = "getUser", desc = "getUser")
    @ReturnValue("String")
    String getUser();
    @Method(code = "getUserById", name = "getUser", desc = "getUser")
    @ReturnValue("String")
    String getUser(@Parameter(name = "id", desc = "id") Integer id);
    @Method(code = "getUserByIdAndName", name = "getUser", desc = "getUser")
    @ReturnValue("String")
    String getUser(@Parameter(name = "id", desc = "id") Integer id, @Parameter(name = "name", desc = "名称") String name);
}

Client
@RequestMapping(path = "/testexceptiondomain")
@FeignClient(value = "TestApplicationI")
public interface TestApplicationI {
    @PostMapping(path = "/TestApplication/getUserList/v1")
    Response<List<Object>> getUserList();
    @PostMapping(path = "/TestApplication/getUser/v1")
    Response<String> getUser();
    @PostMapping(path = "/TestApplication/getUserById/v1")
    Response<String> getUser(@RequestBody(required = false) Integer id);
    @PostMapping(path = "/TestApplication/getUserByIdAndName/v1")
    Response<String> getUser(@RequestBody(required = false) TestApplicationGetUserByIdAndName testApplicationGetUserByIdAndName);
}

Controller
@RestController("TestApplicationCON")
public class TestApplicationController implements TestApplicationI {
    @Autowired
    private TestApplication testApplication;
    @Override
    public Response<List<Object>> getUserList() {
        List<Object> returnResult = testApplication.getUserList();
        return Response.buildSuccess(returnResult);
    }
    @Override
    public Response<String> getUser() {
        String returnResult = testApplication.getUser();
        return Response.buildSuccess(returnResult);
    }
    @Override
    public Response<String> getUser(@RequestBody(required = false) Integer id) {
        String returnResult = testApplication.getUser(id);
        return Response.buildSuccess(returnResult);
    }
    @Override
    public Response<String> getUser(@RequestBody(required = false) TestApplicationGetUserByIdAndName testApplicationGetUserByIdAndName) {
        String returnResult = testApplication.getUser(testApplicationGetUserByIdAndName.getId(), testApplicationGetUserByIdAndName.getName());
        return Response.buildSuccess(returnResult);
    }
}