Spring Boot: Konfiguriranje glavne klase

1. Pregled

Ovaj brzi vodič nudi različite načine definiranja ulazne točke u aplikaciju Spring Boot putem Maven i Gradle.

Glavna klasa aplikacije Spring Boot je klasa koja sadrži javna statička void glavna () metoda koja pokreće Proljeće ApplicationContext. Prema zadanim postavkama, ako glavna klasa nije izričito navedena, Spring će tražiti jedan u putu klase u vrijeme kompajliranja i neće se pokrenuti ako se ne pronađe nijedan ili više njih.

Za razliku od konvencionalnih Java aplikacija, glavna klasa o kojoj se govori u ovom vodiču ne izgleda kao Glavna klasa svojstvo metapodataka u META-INF / MANIFEST.MF rezultirajuće JAR ili WAR datoteke.

Spring Boot očekuje artefakt Glavna klasa svojstvo metapodataka koje treba postaviti na org.springframework.boot.loader.JarLauncher(ili WarLauncher)što znači da prosljeđivanje naše glavne klase izravno u java naredbeni redak neće pravilno pokrenuti našu aplikaciju Spring Boot.

Primjer manifesta izgleda ovako:

Manifest-verzija: 1.0 Početna klasa: com.baeldung.DemoApplication Glavna klasa: org.springframework.boot.loader.JarLauncher

Umjesto toga, moramo definirati Početna klasa svojstvo u manifestu koje ocjenjuje JarLauncher za pokretanje aplikacije.

Pogledajmo kako možemo kontrolirati ovo svojstvo pomoću Mavena i Gradlea.

2. Maven

Glavna klasa se može definirati kao početna klasa element u pom.xmlOdjeljak o svojstvima:

  com.baeldung.DemoApplication 

Imajte na umu da ovo će se svojstvo procijeniti samo ako dodamo i spring-boot-starter-parent kao u našem pom.xml.

Alternativno, glavna klasa može se definirati kao mainClass element dodatak za proljetni boot-maven u odjeljku dodataka našeg pom.xml:

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

Primjer ove Mavenove konfiguracije nalazi se na GitHubu.

3. Gradle

Ako koristimo Dodatak Spring Boot Gradle, postoji nekoliko konfiguracija naslijeđenih od org.springframework.boot gdje bismo mogli odrediti našu glavnu klasu.

U datoteci Gradle projekta, mainClassName može se definirati unutar springBoot konfiguracijski blok. Ovu promjenu ovdje je preuzeo bootRun i bootJar zadatak:

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

Alternativno se glavna klasa može definirati kao mainClassName vlasništvo bootJar Zadatak Gradle:

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

Ili kao manifestni atribut bootJar zadatak:

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

Imajte na umu da je glavna klasa navedena u bootJar konfiguracijski blok utječe samo na JAR koji sam zadatak zadaje. Promjena ne utječe na ponašanje ostalih zadataka Spring Boot Gradlea, kao što su bootRun.

Kao bonus, ako Dodatak za aplikaciju Gradle primjenjuje se na projekt, mainClassName može se definirati kao globalno svojstvo:

mainClassName = 'com.baeldung.DemoApplication' 

Primjer ovih Gradle konfiguracija možemo pronaći na GitHubu.

4. Korištenje CLI-ja

Također možemo odrediti glavnu klasu putem sučelja naredbenog retka.

Proljetne čizme org.springframework.boot.loader.PropertiesLauncher dolazi s JVM argumentom koji vam omogućuje nadjačavanje logičke glavne klase koja se zove utovarivač.glavni:

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

5. Zaključak

Postoji više od nekoliko načina za određivanje točke ulaza u aplikaciju Spring Boot. Važno je znati da su sve ove konfiguracije samo različiti načini za modificiranje manifesta JAR ili WAR datoteke.

Primjere radnog koda možete pronaći ovdje i ovdje.