この投稿では、Spring Boot アプリケーションでメインクラスを指定するさまざまな方法を検討します。

Spring Boot は、外部アプリケーション サーバーやコンテナーを必要とせずに、スタンドアロン アプリケーションとして実行できる実行可能な JAR または WAR ファイルを作成します。ただし、実行可能な JAR または WAR ファイルを作成するには、Spring Boot はどのクラスがアプリケーションのメインクラスであるかを認識する必要があります。メインクラスは、 public static void main(String[] args) Springを起動するメソッド ApplicationContext そしてアプリケーションを起動します。

デフォルトでは、Spring Boot はクラスパスをスキャンして単一のメインクラスを見つけようとしますが、特にプロジェクトにメインメソッドを持つ複数のクラスがある場合、これは常に機能するとは限りません。このような場合、Spring Boot が提供するいくつかの構成オプションを使用して、メインクラスを明示的に指定する必要があります。

1.使用する start-class 財産

Spring Boot アプリケーションでメイン クラスを指定する最も簡単かつ直感的な方法の 1 つは、 start-class 財産。を使用している場合は、 spring-boot-starter-parent、オーバーライドすることで簡単にこれを行うことができます start-class のプロパティ pom.xml。たとえば、次のようなメインクラスがあるとします。 com.example.HelloWorldApplication、そしてそれを次のように指定したいのです。 start-class Spring Boot アプリケーションの。次のようにして実行できます。

 
The start-class property はメインクラスを指定する簡単な方法です。ただし、それを使用する必要があります。 spring-boot-starter-parent Maven の親 pom として。を使用していない場合は、 spring-boot-starter-parentを適用できます。 start-class プロパティに メインクラス の構成パラメータ spring-boot-maven-plugin.

2.使用する mainClass 構成

Spring Boot アプリケーションでメインクラスを指定するもう 1 つの方法は、mainClass 構成を使用することです。この構成は次のように定義できます。 pom.xml Maven プロジェクトのファイルを開くと、 spring-boot-maven-plugin どのクラスがアプリケーションのメインクラスであるか。たとえば、次のようなメインクラスがあるとします。 com.example.HelloWorldApplicationとして指定できます。 mainClass Spring Boot アプリケーションは次のようになります。

 
The mainClass 構成は、 を使用せずにメインクラスを指定したい場合に便利です。 spring-boot-starter-parent、または、 start-class 財産。

3. Gradle プロジェクト

Gradleプロジェクトの場合、メインクラスはタスクのを使用して明示的に構成できます mainClassName 財産:

 
または、メインクラス名をプロジェクト全体で構成することもできます mainClassName Spring Boot DSLのプロパティ:

4.使用する PropertiesLauncher

Spring Boot アプリケーションでメイン クラスを指定するもう 1 つの方法は、 PropertiesLauncher。これは、JVM 引数を使用して論理メイン クラスをオーバーライドできる特別なランチャーです。 loader.main。こうすることで、JAR ファイルや WAR ファイルを変更せずに、実行時にメイン クラスを指定できます。たとえば、次のようなメインクラスがあるとします。 com.example.ExampleApplicationこれを Spring Boot アプリケーションのメイン クラスとして指定したいと考えています。次のようにして実行できます。

The PropertiesLauncher 実行時にメイン クラスを指定する場合、または同じ JAR または WAR ファイルから複数のメイン クラスを実行する場合に便利です。ただし、いくつかの制限もあります。たとえば、JAR または WAR ファイルに ZIP レイアウトを使用する必要があり、他のランチャーやカスタマイズではうまく機能しない可能性があります。

 
参照: SpringBootGradleプラグインリファレンスガイド

これで、SpringBootでメインクラスを指定することができます。