Spring Cloud Function は、次の高レベルのゴールを持つプロジェクトです。
- 関数を介したビジネスロジックの実装を推進します。
- 同じコードを Web エンドポイント、ストリームプロセッサー、タスクとして実行できるように、ビジネスロジックの開発ライフサイクルを特定のランタイムターゲットから分離します。
- サーバーレスプロバイダー全体で統一されたプログラミングモデルをサポートし、スタンドアロン(ローカルまたは PaaS)で実行する機能をサポートします。
- サーバーレスプロバイダーで Spring Boot 機能(自動構成、依存性注入、メトリクス)を有効にします。
すべてのトランスポートの詳細とインフラストラクチャを抽象化し、開発者が使い慣れたツールとプロセスをすべて維持し、ビジネスロジックにしっかりと集中できるようにします。
機能
Spring Cloud Function の機能:
- プログラミングスタイルの選択 - リアクティブ、命令形またはハイブリッド。
- 関数の構成と適応(たとえば、リアクティブ型の命令型関数の構成)。
- 複数の入力と出力を備えたリアクティブ関数のサポートにより、マージ、結合、その他の複雑なストリーミング操作を関数で処理できます。
- 入力と出力の透過的な型変換。
- ターゲットプラットフォームに固有のデプロイのパッケージ化関数(Project Riff、AWS Lambda など)
- HTTP エンドポイントとして外部に関数を公開するためのアダプターなど
- そのようなアプリケーションコンテキストを含む JAR ファイルを分離されたクラスローダーでデプロイし、単一の JVM にまとめてパックできるようにします。
- AWS Lambda [GitHub] (英語) 、Microsoft Azure [GitHub] (英語) 、Google クラウド機能 [GitHub] (英語) 、その他の「サーバーレス」サービスプロバイダー用のアダプター。
以下は、完全で実行可能かつテスト可能な Spring Boot アプリケーション (単純な文字列操作を実装) です。
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@Bean
public Function<Flux<String>, Flux<String>> uppercase() {
return flux -> flux.map(value -> value.toUpperCase());
}
}
サンプルプロジェクト