IntelliJ IDEA 2026.1 Help

Spring モジュリス

Spring モジュリスは、開発者が適切に構造化されたモジュール式の Spring Boot アプリケーションを構築するのに役立つ Spring プロジェクトです。

Spring Modulth は、ドメイン駆動型のモジュール型モノリスを構築するためのツールとベストプラクティスを提供します。 このアプローチにより、開発初期からマイクロサービスアーキテクチャを採用することなく、大規模で複雑なアプリケーションの開発を簡素化できます。

IntelliJ IDEA で Spring Modulitis のサポートを有効にする

Spring Modulth プラグインは IntelliJ IDEA Ultimate にバンドルされており、デフォルトで有効になっています。 この機能は IntelliJ IDEA Community エディションおよび IntelliJ IDEA Edu では利用できません。

Spring Modulth のサポートは、プロジェクトに依存関係を追加した瞬間から利用可能になります。 プラグインが有効になっていることを確認するには、以下の手順を実行してください。

  1. Ctrl+Alt+S を押して設定を開き、 プラグイン を選択します。

  2. インストール済み タブを開き、 Spring モジュリスを検索して、プラグインの横にあるチェックボックスが選択されていることを確認します。

Spring Moduliti プラグインがバンドルされ有効化されました

モジュール型アプリケーションの構造

Spring Moduliti アプリケーションは通常、次の要素で構成されます。

  • アプリケーションの実行に使用されるクラスを含むメインパッケージ。 このクラスには @SpringBootApplication アノテーションが付与されており、通常は実行に使用される main(…) メソッドが含まれています。

  • アプリケーションモジュール — 次のものを含むメインパッケージの直接のサブパッケージ。

    • 提供インターフェース :他のモジュールに提供される API で、通常はモジュールが公開する Spring Bean とドメインイベントを使用して実装します。

    • 内部実装コンポーネント: モジュール内の内部使用を目的としており、外部からはアクセスできません。

    • 必須インターフェース: モジュールによる他のモジュールの機能の使用 (Spring Bean の呼び出し、イベントのリッスン、公開された構成プロパティの使用など)。

以下は、単純なアプリケーションの配置例です。

Demo ╰─ src/main/java ╰─ bookstore // main package ╰─ BookstoreMainApplication.java ╰─ catalog // application module package ╰─ ProductApi.java // provided interface ╰─ domain ╰─ ProductService.java // internal component ╰─ common ╰─ orders ╰─ web ╰─ OrderRestController.java // ProductApi is required interface ╰─ config

ここでの orders モジュールの OrderRestController.java は、 catalog モジュールの公開された ProductApi.java に依存しています。

IntelliJ IDEA では、 プロジェクト ツールウィンドウ Alt+1 を開くとすぐに、モジュールアプリケーションの構造を確認し、その部分間を移動できます。

下の図では、最上位モジュールが緑色のロックでマークされ、内部コンポーネントが赤色のロックでマークされたモジュラーアプリケーションが示されています。

オープンモジュールとクローズドモジュールを含むプロジェクト

また、フレームワークの観点からアプリケーションの 論理構造を確認できます。 @SpringBootApplication が付与されたメインのアプリケーションクラスを選択し、 Alt+7 を押します(またはメインメニューの 表示(V) | ツールウィンドウ(T) | 構造 に移動します)。

構造ツールウィンドウ内のアプリケーションのモジュール一覧

Modullith 固有の モジュール ノードには、アプリケーションのモジュール、その ID、許可された依存関係、名前付きインターフェースのリストが表示されます。

Spring モジュリスのガイドラインを適用する

IntelliJ IDEA は、 インスペクションクイックフィックスのセットを提供することで、アプリケーションの構造を Modulith の Spring アーキテクチャ原則に沿って維持できます。 デフォルトでは、これらのインスペクションは重大度レベルがエラーですが、ハイライトされたコードはコンパイルエラーも実行時エラーも発生しません。 これらの問題は Modulith 固有のテストにのみ不合格となります。

Spring を使用してアプリケーションを実装する場合、開発者はさまざまな Spring Bean を他の Bean に挿入する必要がある場合があります。 IntelliJ IDEA は、 bean の自動補完機能を提供することでこの作業を支援します。

Spring Modulth では、この機能が調整されました。 インジェクションがアプリケーションのモジュール境界に違反した場合、補完ポップアップに警告アイコンが表示されます。

別のモジュールから bean をインポートする

既存のコードの場合、IntelliJ IDEA は、Spring Modullith ルールに違反する bean の使用箇所をハイライトし、コードをモジュラー構造に合わせてリファクタリングするクイックフィックスを提案します (the Quick-fix icon をクリックするか、 Alt+Enter を押すと呼び出されます)。

インポート bean のクイックフィックス

アーキテクチャガイドに応じて、次のクイックフィックスから選択できます。

  • コンポーネントを元のモジュールからベースパッケージに移動します。

    Java クラスを基本パッケージに移動する
  • 挿入されたクラスに @NamedInterface のアノテーションを付けて、このクラスを他のモジュールで開きます。

    @NamedInterface アノテーションが追加されたクラス
  • このクラスを含むモジュールを開きます。

    このクイックフィックスは、インポートしたいクラスを含むモジュールに対して、 @ApplicationModule アノテーション付きの package-info.java ファイルを作成します。 モジュールは 未解決 としてマークされます。

    オープンモジュール

アプリケーションモジュールの依存関係を操作する

モジュール間の依存関係を指定すると、IntelliJ IDEA はモジュールの名前の補完と検証、およびモジュール間のナビゲーションを提供します。

  1. あるモジュールから他のモジュールへの依存関係を明示的に追加するには、依存関係を必要とするモジュール内の package-info.java ファイルを変更する必要があります。

    例: orders モジュールを catalog モジュールと common モジュールに依存させるには、 orders モジュールにある package-info.java ファイルを変更する必要があります。

    モジュール依存関係スキーム
  2. package-info.java ファイルで、 allowedDependencies = {""} の引用符内にキャレットを置き、 Ctrl+Space を押すか、モジュール名の入力を開始します。

  3. IntelliJ IDEA は、補完ポップアップに利用可能なモジュール依存関係を表示します。

    • モジュール — モジュール全体への依存関係。

    • module :: interface — モジュールによって提供される特定の名前付きインターフェースへの依存関係。

    • module :: * — モジュールによって提供されるすべてのインターフェースへの依存関係。

    許可された依存関係を含む補完ポップアップ

    追加したいものを選択して、 Enter を押します。

  4. 追加されたモジュールをクリックして Ctrl+B を押すと、そのモジュールに移動できます。

    モジュールは、 プロジェクト ツールウィンドウ Alt+1 で選択されます。

    プロジェクトツールウィンドウで選択されたモジュール
  5. 依存関係としてリストされているモジュールが存在しない場合は、IntelliJ IDEA は参照をハイライトし、アプリケーションの構造を修正して起動の失敗を防ぐことができます。

    モジュールが存在しません
2026 年 3 月 30 日