SpringCloud Function作为SpringCloud家族成员最早在2017年提出,项目主要负责人为Mark Fisher,目前已经来到了3.0版本。SpringCloud Function的出现旨在为快速发展的Serverless市场提供一个Spring的接入路径,使用SpringCloud Function进行无服务(我这里直接称为函数式编程)的项目开发可以大大节约成本,同时对于SpringBoot熟悉的人可以迅速上手。关于无服务和SpringCloud Function的详细资料可以参考网上的其他资料我不再赘述。以下提供一个简单的SpringCloud Function项目工程构建和打包范例。
在开始之前需要知道,目前使用SpringCloud Function需要结合云服务商提供的serverless相关服务,包括:AWS Lambda,Azure Functions,Cloud Functions,国内阿里云,腾讯云,华为云等都提供类似服务,或者开源的自建Serverless平台,包括:IBM OpenWhisk,kubeless,knative等。
创建一个SpringCloud Function应用十分简单,可以直接使用Spring官网提供的Quick start-Spring Initializr快速构建一个Springboot工程,只需在生成Dependencies时勾选SpringCloud Function即可。而后你将得到一个项目工程的压缩包,解压后导入IDE即可运行。
以下完整范例可到我的GitHub仓库获取:https://github.com/jwwam/scfunc.git
推荐使用上述的方式去构建Springboot项目,方便快捷,我这里也给出一个简单的示例,主要是加以说明。
1.先来看下项目工程的目录结构,突出函数式编程我创建一个function包用于管理所有函数。application.properties只有一个配置用于映射函数所在包的位置。pojo包用来管理所有的pojo对象,Java函数是支持接收object的,一般业务中我们需要实体类对象以满足开发需求。
2.使用maven构建,下面是pom配置,注意打包方式为jar,使用Lombok插件精简代码量。