SpringBootでメインクラスを指定する
この投稿では、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 アプリケーションの。次のようにして実行できます。
1 2 3 |
<properties> <start-class>com.example.HelloWorldApplication</start-class> </properties> |
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 アプリケーションは次のようになります。
1 2 3 4 5 6 7 8 9 10 11 |
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <mainClass>com.example.HelloWorldApplication</mainClass> </configuration> </plugin> </plugins> </build> |
The mainClass
構成は、 を使用せずにメインクラスを指定したい場合に便利です。 spring-boot-starter-parent
、または、 start-class
財産。
3. Gradle プロジェクト
Gradleプロジェクトの場合、メインクラスはタスクのを使用して明示的に構成できます mainClassName
財産:
1 2 3 |
bootJar { mainClassName = 'com.example.ExampleApplication' } |
または、メインクラス名をプロジェクト全体で構成することもできます mainClassName
Spring Boot DSLのプロパティ:
1 2 3 |
springBoot { mainClassName = 'com.example.ExampleApplication' } |
4.使用する PropertiesLauncher
Spring Boot アプリケーションでメイン クラスを指定するもう 1 つの方法は、 PropertiesLauncher
。これは、JVM 引数を使用して論理メイン クラスをオーバーライドできる特別なランチャーです。 loader.main
。こうすることで、JAR ファイルや WAR ファイルを変更せずに、実行時にメイン クラスを指定できます。たとえば、次のようなメインクラスがあるとします。 com.example.ExampleApplication
これを Spring Boot アプリケーションのメイン クラスとして指定したいと考えています。次のようにして実行できます。
1 2 |
java -cp bootApp.jar -Dloader.main=com.example.ExampleApplication org.springframework.boot.loader.PropertiesLauncher |
The PropertiesLauncher
実行時にメイン クラスを指定する場合、または同じ JAR または WAR ファイルから複数のメイン クラスを実行する場合に便利です。ただし、いくつかの制限もあります。たとえば、JAR または WAR ファイルに ZIP レイアウトを使用する必要があり、他のランチャーやカスタマイズではうまく機能しない可能性があります。
参照: SpringBootGradleプラグインリファレンスガイド
これで、SpringBootでメインクラスを指定することができます。