Spring Boot: Konfiguration af en hovedklasse

1. Oversigt

Denne hurtige vejledning giver forskellige måder at definere et indgangspunkt i en Spring Boot-applikation via Maven og Gradle.

En Spring Boot-applikations hovedklasse er en klasse, der indeholder en offentlig statisk ugyldig hoved () metode, der starter foråret ApplicationContext. Som standard, hvis hovedklassen ikke er eksplicit angivet, søger Spring efter en i klassestien på kompileringstidspunktet og starter ikke, hvis ingen eller flere af dem findes.

I modsætning til konventionelle Java-applikationer vises hovedklassen, der diskuteres i denne vejledning, ikke som Hovedklasse metadataegenskab i META-INF / MANIFEST.MF for den resulterende JAR- eller WAR-fil.

Spring Boot forventer artefakterne Hovedklasse metadataegenskab, der skal indstilles til org.springframework.boot.loader.JarLauncher(eller WarLauncher)hvilket betyder, at det at sende vores hovedklasse direkte til java-kommandolinjen ikke starter vores Spring Boot-applikation korrekt.

Et eksempel på et manifest ser sådan ud:

Manifest-version: 1.0 Start-klasse: com.baeldung.DemoApplication Hovedklasse: org.springframework.boot.loader.JarLauncher

I stedet skal vi definere Start-klasse ejendom i manifestet, som evalueres af JarLauncher for at starte applikationen.

Lad os se, hvordan vi kan kontrollere denne ejendom ved hjælp af Maven og Gradle.

2. Maven

Hovedklassen kan defineres som en startklasse element i pom.xml'S egenskabssektion:

  com.baeldung.DemoApplication 

Noter det denne egenskab evalueres kun, hvis vi også tilføjer spring-boot-starter-parent som i vores pom.xml.

Alternativt hovedklassen kan defineres som hovedklasse element i spring-boot-maven-plugin i pluginsektionen i vores pom.xml:

   org.springframework.boot spring-boot-maven-plugin com.baeldung.DemoApplication 

Et eksempel på denne Maven-konfiguration kan findes på GitHub.

3. Gradle

Hvis vi bruger Spring Boot Gradle-plugin, der er et par konfigurationer nedarvet fra org.springframework.boot hvor vi kunne specificere vores hovedklasse.

I projektets Gradle-fil, mainClassName kan defineres inden for springBoot konfigurationsblok. Denne ændring foretaget her er afhentet af bootRun og bootJar opgave:

springBoot {mainClassName = 'cpm.baeldung.DemoApplication'}

Alternativt kan hovedklassen defineres som mainClassName ejendom af bootJar Gradle-opgave:

bootJar {mainClassName = 'cpm.baeldung.DemoApplication'}

Eller som en åbenbar attribut for bootJar opgave:

bootJar {manifest {attributter 'Start-klasse': 'com.baeldung.DemoApplication'}}

Bemærk, at hovedklassen specificeret i bootJar konfigurationsblok påvirker kun det JAR, som selve opgaven producerer. Ændringen påvirker ikke opførelsen af ​​andre Spring Boot Gradle-opgaver som f.eks bootRun.

Som en bonus, hvis Gradle applikations plugin anvendes på projektet, mainClassName kan defineres som en global ejendom:

mainClassName = 'com.baeldung.DemoApplication' 

Vi kan finde et eksempel på disse Gradle-konfigurationer på GitHub.

4. Brug af CLI

Vi kan også specificere en hovedklasse via kommandolinjegrænsefladen.

Spring Boot's org.springframework.boot.loader.PropertiesLauncher kommer med et JVM-argument for at lade dig tilsidesætte den logiske hovedklasse, der kaldes læsser. hoved:

java -cp bootApp.jar -Dloader.main = com.baeldung.DemoApplication org.springframework.boot.loader.PropertiesLauncher

5. Konklusion

Der er mere end et par måder at specificere indgangspunktet for en Spring Boot-applikation. Det er vigtigt at vide, at alle disse konfigurationer bare er forskellige måder at ændre manifestet på en JAR- eller WAR-fil på.

Eksempler på arbejdskoder kan findes her og her.


$config[zx-auto] not found$config[zx-overlay] not found