109. 部署打包 Function

Spring Cloud Function 提供了一个“deployer”library,它允许您使用隔离的 class 加载器启动 jar 文件(或展开的存档或 jar files 集合)并公开其中定义的函数。这是一个非常强大的工具,可以让您在不更改目标 jar 文件的情况下,将 function 调整为一系列不同的 input-output 适配器。无服务器平台通常具有内置的这种 feature,因此您可以在这样的平台中将其视为 function 调用者的 building 块(事实上里夫 Java function 调用者使用此 library)。

API 的标准入口点是 Spring configuration annotation @EnableFunctionDeployer。如果在 Spring Boot application 中使用它,那么部署者会启动并查找一些 configuration 来告诉它在哪里找到 function jar。用户必须至少提供function.location,它是包含这些功能的存档的 URL 或资源位置。它可以选择使用maven:前缀通过依赖项查找来定位 artifact(有关完整的详细信息,请参阅FunctionProperties)。 Spring Boot application 是从 jar 文件引导的,使用MANIFEST.MF来定位一个 start class,这样对于 example,标准 Spring Boot fat jar 效果很好。如果目标 jar 可以成功启动,那么结果是在主 application 的FunctionCatalog中注册的 function。注册的 function 可以在主 application 中通过 code 应用,即使它是在一个隔离的 class 加载器中创建的(通过 deault)。