開發與維運

面向声明式API编程(DAP)

面向声明式API编程(DAP)

DAP是Mars-java 最近提出的一个新的开发方式,全称 Declarative API Programming, 提倡后端为一个独立的整体,不应该是为前端服务的,所以当前端需要接口的时候,只需要声明一个API给他,而不需要专门开发一个Controller出来

DAP详细介绍

按照传统的开发方式,如果要开发一个后端接口,需要分为以下三步

  1. 创建controller
  2. 创建service
  3. 创建dao(甚至会创建存放sql的xml)

但是,我们编写一个接口,重点应该是放在业务逻辑上的,也就是说 我们的关注点应该在第二步,而且Controller跟前端的耦合性也非常的高,所以出现了一个新玩法,这套新玩法就叫声明式API

  1. 写业务逻辑
  2. 声明一个API给前端
  3. 将API与业务逻辑关联

编写业务逻辑

@MarsBean("testService")
public class TestService {

    要返回的数据类型 selectListForName(TestDTO testDTO){
        // 第一步 根据testDTO里的参数从xx表查询需要的数据
        // 第二步 根据查出来的数据,去操作xx2表
        // 第三步 对前两步的结果汇总,进行xxx操作
        
        return 数据(直接返回即可,会自动变成json);
    }
}

声明一个API接口

@MarsApi
public interface TestApi {

    Object selectList(TestDTO testDTO);
}

将api与业务逻辑关联

@MarsApi
public interface TestApi {
        
    @MarsReference(beanName = "testService",refName = "selectListForName")
    Object selectList(TestDTO testDTO);
}

前端直接调用这个API就好了

这么做的好处,可以散藕

  1. 通过更换MarsReference的配置,可以关联到不同的业务逻辑
  2. 如果前端不需要这个接口了,直接无脑删就好了,因为这只是一个抽象方法,还原成本几乎为0
  3. 后端专注业务逻辑就好了,不需要考虑跟前端互动,前端需要的时候开个门就好了

项目目录规范

为了更好地发挥出这个架构的优势,所以制定了一个规范,仅对项目的模块划分做出了规范,其他遵循jvm和自己所在的公司即可

下面用缩进来表示树形结构

项目名称(pom)
    项目名称-api(jar)
    项目名称-core(jar)
    项目名称-start(jar)
    项目名称-test(jar)
pom.xml
  • api里就放声明的api,其他东西都不要放
  • core作为项目的核心模块,里面放bean,dao,实体类等
  • start是启动模块,里面放配置文件和启动类
  • test用来放单元测试代码和所需的文件
  • 括号里的pom,jar等标记是指maven里的配置项,不包含在名称中

Leave a Reply

Your email address will not be published. Required fields are marked *