Spring Boot: Konfigurere en hovedklasse

1. Oversikt

Denne raske opplæringen gir forskjellige måter å definere et inngangspunkt til en Spring Boot-applikasjon via Maven og Gradle.

Hovedklassen til en Spring Boot-applikasjon er en klasse som inneholder en offentlig statisk ugyldig hoved () metode som starter våren ApplicationContext. Som standard, hvis hovedklassen ikke er eksplisitt spesifisert, vil Spring søke etter en i klassestien på kompileringstidspunktet og unnlater å starte hvis ingen eller flere av dem blir funnet.

I motsetning til i vanlige Java-applikasjoner, vises ikke hovedklassen som er diskutert i denne opplæringen som Hovedklasse metadataegenskap i META-INF / MANIFEST.MF for den resulterende JAR- eller WAR-filen.

Spring Boot forventer gjenstandene Hovedklasse metadataegenskapen skal settes til org.springframework.boot.loader.JarLauncher(eller WarLauncher)som betyr at å sende hovedklassen direkte til java-kommandolinjen ikke vil starte vår Boot Boot-applikasjon riktig.

Et eksempel på manifest ser slik ut:

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

I stedet må vi definere Start-klasse eiendom i manifestet som evalueres av JarLauncher for å starte søknaden.

La oss se hvordan vi kan kontrollere denne egenskapen ved hjelp av Maven og Gradle.

2. Maven

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

  com.baeldung.DemoApplication 

Noter det denne egenskapen vil bare bli evaluert hvis vi også legger til våren-boot-starter-foreldre som i vår pom.xml.

Alternativt hovedklassen kan defineres som hovedklasse element av spring-boot-maven-plugin i plugin-delen av vår pom.xml:

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

Et eksempel på denne Maven-konfigurasjonen finner du på GitHub.

3. Gradere

Hvis vi bruker Spring Boot Gradle-plugin, det er noen få konfigurasjoner arvet fra org.springframework.boot hvor vi kunne spesifisere hovedklassen vår.

I prosjektets Gradle-fil, mainClassName kan defineres innenfor springBoot konfigurasjonsblokk. Denne endringen som er gjort her blir plukket opp av bootRun og bootJar oppgave:

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

Alternativt kan hovedklassen defineres som mainClassName tilhører bootJar Gradle oppgave:

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

Eller som en manifest attributt for bootJar oppgave:

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

Merk at hovedklassen spesifisert i bootJar konfigurasjonsblokk påvirker bare JAR som selve oppgaven produserer. Endringen påvirker ikke oppførselen til andre Spring Boot Gradle-oppgaver som bootRun.

Som en bonus, hvis Gradle applikasjons plugin blir brukt på prosjektet, mainClassName kan defineres som en global eiendom:

mainClassName = 'com.baeldung.DemoApplication' 

Vi kan finne et eksempel på disse Gradle-konfigurasjonene på GitHub.

4. Bruke CLI

Vi kan også spesifisere en hovedklasse via kommandolinjegrensesnittet.

Vårstøvler org.springframework.boot.loader.PropertiesLauncher kommer med et JVM-argument for å la deg overstyre den logiske hovedklassen som heter laster. hoved:

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

5. Konklusjon

Det er mer enn noen få måter å spesifisere inngangspunktet til en Spring Boot-applikasjon. Det er viktig å vite at alle disse konfigurasjonene bare er forskjellige måter å endre manifestet til en JAR- eller WAR-fil på.

Eksempler på arbeidskoder finner du her og her.


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