Reactive Streams
Reactive Streams プラグインをインストールする},{
この機能は、インストールして有効化する必要がある Reactive Streams プラグインに依存しています。},{
Ctrl+Alt+S を押して設定を開き、 を選択します。
Marketplace タブを開き、 Reactive Streams プラグインを見つけて、 インストール をクリックします(プロンプトが表示されたら、IDE を再起動します)。},{
Reactive Streams(英語) は、ノンブロッキングバックプレッシャを使用した非同期ストリーム処理の仕様です。 IntelliJ IDEA は、Reactive Streams に基づく次の非ブロッキングリアクティブ Java フレームワークのサポートを提供します。
リアクティブアプリケーションのサポートには、コード補完、インスペクション、クイックフィックス、専用のデバッグモードが含まれます。
Reactor サポートを追加
プロジェクトに Reactor サポートを追加する方法はいくつかあります。Maven または Gradle プロジェクトのビルドファイルに必要な依存関係を追加するか、Reactor ライブラリを手動でダウンロードできます。 Spring Boot アプリケーションの場合、新しいプロジェクトを作成する際に IntelliJ IDEA で必要な依存関係を追加できます。
Reactor を Maven プロジェクトに追加する
Maven プロジェクトの場合、 部品表 (BOM)(英語) をコアと一緒にインポートすることをお勧めします。これにより、Reactor コンポーネントが正常に機能するようになります。
pom.xmlファイルで、次の依存関係を追加して BOM をインポートします。<dependencyManagement> <dependencies> <dependency> <groupId>io.projectreactor<groupId> <artifactId>reactor-bom<artifactId> <version>Dysprosium-SR1<version> <type>pom</type> <scope>import<scope> <dependency> <dependencies> <dependencyManagement>次の依存関係を追加して、Reactor をインポートします。
<dependencies> <dependency> <groupId>io.projectreactor<groupId> <artifactId>reactor-core<artifactId> <dependency> <dependencies>
Reactor を Gradle に追加 (Gradle 5.0 以降)
Gradle プロジェクトの場合、 部品表 (BOM)(英語) をコアと一緒にインポートすることをお勧めします。これにより、Reactor コンポーネントが正常に機能するようになります。
build.gradleで、次の依存関係を追加します。dependencies { // import BOM implementation platform('io.projectreactor:reactor-bom:Dysprosium-SR1') // add dependencies without a version number implementation 'io.projectreactor:reactor-core' }
Reactor を Gradle に追加 (Gradle 4.x およびそれ以前)
Gradle プロジェクトの場合、 部品表 (BOM)(英語) をコアと一緒にインポートすることをお勧めします。これにより、Reactor コンポーネントが正常に機能するようになります。
以前の Gradle バージョンは BOM をサポートしていませんが、Spring gradle-dependency-management(英語) プラグインを使用して BOM をプロジェクトにインポートできます。
次のコードを
build.gradleに追加して、Gradle プラグインポータルからプラグインを取得します。plugins { id "io.spring.dependency-management" version "1.0.6.RELEASE" }次のコードを追加して、BOM をインポートします。
dependencyManagement { imports { mavenBom "io.projectreactor:reactor-bom:Dysprosium-SR1" } }Reactor サポートを追加します。
dependencies { compile 'io.projectreactor:reactor-core' }
Reactor ライブラリをプロジェクトに追加する
ネイティブ IDE ビルダーでプロジェクトをビルドする場合、Reactor サポートをライブラリとして追加できます。
メインメニューで、 Ctrl+Alt+Shift+S に移動するか、ツールバーの
をクリックします。
ライブラリ を選択し、
をクリックしてから、 Maven から… を選択します。
開いたダイアログで、ライブラリアーティファクト
io.projectreactor:reactor-core:3.1.06.RELEASEを指定し、 OK をクリックします。
Reactor で新しい Spring Boot プロジェクトを作成する
IntelliJ IDEA を起動してください。
'ようこそ' 画面が開いたら、「新規プロジェクト 」をクリックします。
それ以外の場合は、メインメニューの に移動します。
左側のペインから Spring Initializr を選択します。
をクリックして、使用するサービスの URL を入力するか、デフォルトのままにします。
プロジェクトの名前とロケーションを指定し、プロジェクトのメタデータを構成します。言語、ビルドツールを選択し、アーティファクト ID を指定してください。
JDK リストから、プロジェクトで使用する JDK を選択します。
JDK がコンピューターにインストールされているが、IDE で定義されていない場合は、 JDK を追加 を選択し、JDK ホームディレクトリへのパスを指定します。
必要な JDK がコンピューターにない場合は、 JDK のダウンロード を選択します。
プロジェクト JDK のバージョンとは異なる Java バージョンでプロジェクトをビルドする場合は、ここで選択できます。

次へ(N) をクリックします。
ウィザードの次のステップで、 依存関係 リストから Spring リアクティブ Web を選択し、 作成 をクリックします。

Reactor のデバッグモード
Reactor には、非同期コードのデバッグ用に設計されたアセンブリ時インストルメンテーションが含まれています。 Reactor デバッグモードを有効にすると、プログラムが一時停止された後のスタックトレースのより便利なビューを取得できます。 フレームを調べて、特定のパラメーターが Reactive アプリケーションのメソッドに渡された理由を理解できます。
IntelliJ IDEA は Reactor デバッグモードを認識しており、 デバッグ ツールウィンドウの フレーム タブに失敗した操作へのトレースバックを表示します。 さらに、IntelliJ IDEA は、コードを変更せずにデバッグモードを有効にして、デバッグセッションの実行時に必要な呼び出しを行うことができます。

デフォルトでは、Reactor デバッグモードが有効になっています。 これは、開発、テスト、デバッグ中に便利ですが、通常、アプリケーションのパフォーマンスに影響を与えます。
Reactor デバッグモードを構成する
Ctrl+Alt+S を押して設定を開き、 を選択します。
Reactor のデバッグモードを有効化 オプションを有効にして、デバッグの初期化方法の 1 つを選択します。
Hooks.onOperatorDebug(): この方法では、すべてのオペレーターのスタックトレースがキャプチャーされますが、時間がかかり、多くのリソースを必要とします。 運用環境ではこのメソッドを使用しないでください。 詳細については、「デバッグモードのアクティブ化(英語) 」を参照してください。
ReactorDebugAgent.init(): この Java エージェントを使用すると、実行時に大きな影響を与えることなく、アプリケーションの例外をデバッグできます。 詳細については、「本番環境に対応したグローバルデバッグ(英語) 」を参照してください。
さらに、エージェントが利用できないときに通知を表示する場合は、 ReactorDebugAgent.init() が呼び出せない場合に通知する を選択します。
なし: グローバルデバッグを有効にしていない場合は、このオプションを選択し、コード内で
checkpoint()演算子を使用して、よりきめ細かいアプローチを実現します。 詳細については、 checkpoint() の代替(英語)を参照してください。
Mono/Flux インスタンスを遅延計算値としてレンダリングする オプションを有効にして、デバッグセッションで Mono および Flux 値を評価します。 これにより、次のパラメーターを設定できるようになります。
一度にフェッチする Flux 要素の最大数: Flux から 1 回の get オペレーションで取得する要素の最大数を指定します (デバッグセッションで
collectList()をクリックする場合)。タイムアウト後に Mono/Flux 評価を停止: 今後の補完を待つ最大時間。
変更を適用して、ダイアログを閉じます。
デバッグモードで Mono または Flux をサブスクライブする
リアクティブアプリケーションをデバッグする場合、デバッグセッションで対応するパブリッシャーをサブスクライブすることで、Mono と Flux の値を評価できます。
Mono または Flux を返すメソッドにブレークポイントを設定します。
デバッグセッションを開始します。ツールバーの
をクリックするか、 Shift+F9 を押してください。
開いた デバッグ ツールウィンドウで、 デバッガー タブを選択します。
Mono オブジェクトがある場合は、その横にある
get()をクリックします。 これにより、パブリッシャーに登録され、toFuture().get()メソッドを使用して Mono 値が取得されます。Flux オブジェクトがある場合は、その横にある
collectList()をクリックします。 これにより、パブリッシャーに登録され、collectList().toFuture().get()メソッドを使用してストリーム要素が取得されます。 フェッチされる要素の数は 100 に制限されています。 最初の 100 要素が表示されたら、リストの最後をダブルクリックしてさらに要素を取得できます。 この制限は で構成できます。

高度な Reactor インスペクション
IntelliJ IDEA には、スレッドをブロックしてはならないコードフラグメント内の不適切なスレッドブロックメソッド呼び出しを検出する ノンブロッキングコンテキストでブロッキング呼び出しの可能性あり インスペクションが含まれています。 Reactor サポートは、 subscribeOn() および publishIn() オペレーターを処理することにより、オペレーターがどのスレッドで実行されるかを IntelliJ IDEA がローカルで理解できるようにするオプションも追加します。

このオプションはデフォルトで有効になっています。無効にする場合は、次の手順を実行します。
Ctrl+Alt+S を押して設定を開き、 を選択します。
高度な解析を使用してノンブロッキングスコープを検出する チェックボックスをオフにし、 OK をクリックして新しい設定を適用します。
@Blocking および @NonBlocking アノテーション
JetBrains アノテーションコレクション(英語)には、Kotlin コルーチンやプロジェクト Reactor または RxJava のリアクティブコードなど、非ブロッキングコンテキストでのブロッキング呼び出しを IntelliJ IDEA が検出するのに役立つ @Blocking および @NonBlocking アノテーションが含まれています。
org.jetbrains:annotations バージョン 22.0.0 以降をプロジェクトの依存関係に追加します。 IntelliJ IDEA は、 Micronaut(英語) および スモールライの反乱(英語)の対応するアノテーションもサポートします。
Reactor での後置補完
IntelliJ IDEA は、Reactor を使用するプロジェクトに接尾辞コード補完を提供します。 後置補完は、すでに入力した式を、入力した内容に基づいて別の式に変換できます。
Reactor をサポートするプロジェクトでは、IDE は適切な reactor.core.publisher.Flux ファクトリまたは reactor.core.publisher.Mono ファクトリで式をラップできます。

ビデオチュートリアル
次のビデオは、IntelliJ IDEA で動作する Reactive Spring Boot アプリケーションを作成する方法を示しています。