美文网首页
统一的分页BasePageController设计

统一的分页BasePageController设计

作者: 从入门到脱发 | 来源:发表于2018-11-09 15:51 被阅读0次

多个业务模块中最常见的分页和info接口,分散在各个controller,个人想法可以利用IOC的beanFactory统一抽取公共的方案,使用接口来规范,多个业务不同实现.

1.制定接口

snipaste_20181109_154031.png

2.多个实现

snipaste_20181109_154341.png snipaste_20181109_154041.png snipaste_20181109_154103.png

3.controller动态获取service实现

实现的思路是不再自动注入bean的service,而且通过bean的id来获取实现,完成不同的业务,bean的id也可以两种不同的方式传入,以下是controller代码,可惜项目老大没有采用我的这种设计,service接口可以扩充query的bean来条件查询,这只是最基本的功能,接口是制定规范,很好的利用接口,一旦采用这种设计,后续增加新的模块,只需实现接口即可.

@RestController
@RequestMapping("/api")
public class PageController implements BeanFactoryAware {

    private BeanFactory beanFactory;

    @GetMapping("/common/page")
    public Page getPage(Page page,String name) {
        Page pageInfo = new Page();
        
        //前端必传name
        /*
         * 不同的业务对应不同的name
         * 款式
         * 比如http://localhost:8080/api/common/page?name=style&pageNum=1&pageSize=5
         * 订单 
         * http://localhost:8080/api/common/page?name=order&pageNum=1&pageSize=5
         */
        PageService pageService = (PageService) beanFactory.getBean(name);
        pageInfo= pageService.getPage(page);
        return pageInfo;
    }
    
    
    @RequestMapping(value="/{name}/page",method = RequestMethod.GET)
    public Page getPageByUri(Page page,@PathVariable("name") String name) {
        Page pageInfo = new Page();
        
        //这种用法,前端不用传name,但是改变url,占位符根据业务不同,写不同的值,个人觉得这种方式更好
        /*
         * 
         * 款式
         * 比如http://localhost:8080/api/style/page?pageNum=1&pageSize=5
         * 订单 
         * http://localhost:8080/api/order/page?pageNum=1&pageSize=5
         */
        PageService pageService = (PageService) beanFactory.getBean(name);
        pageInfo= pageService.getPage(page);
        return pageInfo;
    }
    
    @GetMapping("/common/info")
    public Page getInfo(String name,Long id) {
        
        //前端必传name
        /*
         * 不同的业务对应不同的name
         * 款式
         * 比如http://localhost:8080/api/common/page?name=style&id=1
         * 订单 
         * http://localhost:8080/api/common/page?name=order&id=1
         */
        PageService pageService = (PageService) beanFactory.getBean(name);
        Page info = pageService.getInfo(id);
        return info;
    }
    
    
    @Override
    public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
        this.beanFactory = beanFactory;

    }

}

相关文章

  • 统一的分页BasePageController设计

    多个业务模块中最常见的分页和info接口,分散在各个controller,个人想法可以利用IOC的beanFact...

  • 分页的封装

    分页的封装设计

  • 附8 页面布局设计原则概述

    MisShop开发设计管理系统,系统一般都在PC上运行。大部分页面用列表模板就够了,需要用到布局的不是特别多,但也...

  • springboot 框架集成(三) 统一ResultBean/

    1. 优化ResultBean,统一响应结构 2. 改写controller,响应改成统一的响应bean 3. 分页插件

  • 作业设计要注意的

    作业设计的目标要做到三个统一:内容设计与形式设计相统一,作业设计的目标与教学目标,学习目标相统一,作业设计的目标与...

  • 数据库分页进行中

    数据库分页设计与规划进行中。。。

  • 三、分页功能设计

    在 WEB 应用程序开发过程中,分页功能是必不可少的一个功能,分页功能可以简单也可以设计的很复杂,应用的分页功能一...

  • 启动优化之二进制重排

    涉及的基础知识点 虚拟内存和分页 我们知道,现代操作系统一般都采用虚拟内存管理机制,用分段(segment)和分页...

  • 滚动加载的列表

    开始之前 今儿的项目又遇见一个不按套路出牌的设计:一个列表页,设计图上是不分页查询,后台给的接口是分页查询。跟产品...

  • 分页接口设计

    两种分页方式 传统的分页方式页最典型的特点是页面上有一连串的页码,和电梯按钮相似,因此页常被称之为电梯式分页。 电...

网友评论

      本文标题:统一的分页BasePageController设计

      本文链接:https://www.haomeiwen.com/subject/mfjoxqtx.html