Spring Boot: Konfigurácia hlavnej triedy

1. Prehľad

Tento rýchly tutoriál poskytuje rôzne spôsoby definovania vstupného bodu do aplikácie Spring Boot pomocou programov Maven a Gradle.

Hlavná trieda aplikácie Spring Boot je trieda, ktorá obsahuje a public static void main () metóda, ktorá naštartuje jar ApplicationContext. V predvolenom nastavení, ak nie je výslovne zadaná hlavná trieda, Spring v čase kompilácie vyhľadá jednu v ceste triedy a nespustí sa, ak sa nenájde žiadna alebo viac z nich.

Na rozdiel od bežných aplikácií Java sa hlavná trieda uvedená v tomto výučbe nezobrazuje ako Hlavná trieda vlastnosť metadát v META-INF / MANIFEST.MF výsledného súboru JAR alebo WAR.

Spring Boot očakáva artefakt Hlavná trieda vlastnosť metadát, ktorá sa má nastaviť na org.springframework.boot.loader.JarLauncher(alebo WarLauncher)čo znamená, že prechod našej hlavnej triedy priamo na príkazový riadok java nespustí našu aplikáciu Spring Boot správne.

Príklad manifestu vyzerá takto:

Verzia manifestu: 1.0 Štartovacia trieda: com.baeldung.DemoApplication Hlavná trieda: org.springframework.boot.loader.JarLauncher

Namiesto toho musíme definovať Start-Class majetok v manifeste, ktorý je hodnotený pomocou JarLauncher na spustenie aplikácie.

Pozrime sa, ako môžeme túto vlastnosť ovládať pomocou Maven a Gradle.

2. Maven

Hlavnú triedu je možné definovať ako prvotriedna trieda prvok v pom.xmlSekcia vlastností:

  com.baeldung.DemoApplication 

Poznač si to táto vlastnosť sa vyhodnotí, iba ak k tomu pridáme aj spring-boot-starter-parent ako v našom pom.xml.

Prípadne hlavná trieda môže byť definovaná ako mainClass prvok spring-boot-maven-plugin v sekcii doplnkov našej pom.xml:

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

Príklad tejto konfigurácie Maven nájdete na GitHub.

3. Gradle

Ak používame Doplnok Spring Boot Gradle, je zdedených niekoľko konfigurácií org.springframework.boot kde by sme mohli určiť našu hlavnú triedu.

V súbore projektu Gradle mainClassName možno definovať v rámci SpringBoot konfiguračný blok. Túto tu vykonanú zmenu zachytáva používateľ bootRun a bootJar úloha:

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

Alternatívne možno hlavnú triedu definovať ako mainClassName majetok bootJar Úloha gradle:

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

Alebo ako zjavný atribút bootJar úloha:

bootJar {manifest {atribút 'Start-Class': 'com.baeldung.DemoApplication'}}

Všimnite si, že hlavná trieda uvedená v bootJar konfiguračný blok ovplyvňuje iba JAR, ktorý produkuje samotná úloha. Táto zmena neovplyvní správanie ostatných úloh Spring Boot Gradle, ako sú bootRun.

Ako bonus, ak Doplnok aplikácie Gradle sa aplikuje na projekt, mainClassName možno definovať ako globálnu vlastnosť:

mainClassName = 'com.baeldung.DemoApplication' 

Na serveri GitHub môžeme nájsť príklad týchto konfigurácií Gradle.

4. Používanie CLI

Hlavnú triedu môžeme určiť aj prostredníctvom rozhrania príkazového riadku.

Jarné čižmy org.springframework.boot.loader.PropertiesLauncher prichádza s argumentom JVM, ktorý vám umožní prepísať logickú hlavnú triedu s názvom nakladač.main:

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

5. Záver

Existuje viac ako niekoľko spôsobov, ako určiť vstupný bod do aplikácie Spring Boot. Je dôležité vedieť, že všetky tieto konfigurácie predstavujú iba rôzne spôsoby úpravy manifestu súboru JAR alebo WAR.

Príklady pracovných kódov nájdete tu a tu.


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