知识卡片
函数三原语作为业务逻辑的通用语言
内容
几乎任何业务需求都能用三种标准 Java 接口表达:只产出没有输入的 Supplier(生产者/数据源)、既有输入又有输出的 Function(处理器)、只接收没有输出的 Consumer(订阅者/终点)。用这三种原语写业务逻辑时,代码里完全不出现任何框架痕迹——就是纯 Java,可以脱离 Spring 独立用 JUnit 测试。框架的角色只是在这套函数写好之后,负责把它们接到不同的触发方式上:可以自动暴露成 REST 端点,可以直接打包部署到 Serverless 平台,也可以绑定到消息代理的输入输出通道,业务逻辑本身完全不用因为触发方式的变化而改一行代码。发散:这是”业务逻辑与触发机制解耦”的一个特别干净的例子——[[仓储抽象隔离领域与持久化]]解耦的是业务逻辑和持久化细节,这里解耦的是业务逻辑和”这段代码到底是被 HTTP 请求触发、消息队列触发还是 Serverless 事件触发”,殊途同归的都是把易变的外部触达方式挡在一层抽象之外。
参考来源
《Cloud Native Spring in Action》第10章《Event-driven applications and functions》