מגף אביב: קביעת תצורה של מעמד ראשי

1. סקירה כללית

הדרכה מהירה זו מספקת דרכים שונות להגדרת נקודת כניסה ליישום Spring Boot באמצעות Maven ו- Gradle.

המחלקה הראשית של יישום Boot Boot היא מחלקה המכילה a ריק סטטי ציבורי ראשי () שיטה שמתחילה את האביב ApplicationContext. כברירת מחדל, אם המחלקה הראשית אינה מוגדרת במפורש, Spring יחפש אחת בכיתה בזמן הקומפילציה ולא יתחיל אם לא נמצא אף אחד או כמה מהם.

שלא כמו ביישומי Java קונבנציונליים, המעמד העיקרי שנדון במדריך זה אינו מופיע כ- מעמד ראשי מאפיין מטא-נתונים ב- META-INF / MANIFEST.MF של קובץ JAR או WAR שנוצר.

מגף האביב מצפה לחפצים מעמד ראשי מאפיין מטא נתונים שיש להגדיר אליו org.springframework.boot.loader.JarLauncher(אוֹ WarLauncher)כלומר העברת המחלקה הראשית שלנו ישירות לשורת הפקודה java לא תפעיל נכון את יישום Spring Boot שלנו.

דוגמה למניפסט נראית כך:

גרסת מניפסט: 1.0 מחלקת התחלה: com.baeldung.DemoApplication מחלקה ראשית: org.springframework.boot.loader.JarLauncher

במקום זאת, עלינו להגדיר את סטארט-קלאס נכס במניפסט אשר מוערך על ידי JarLauncher כדי להפעיל את היישום.

בואו נראה כיצד אנו יכולים לשלוט במאפיין זה באמצעות Maven ו- Gradle.

2. מייבן

ניתן להגדיר את המעמד הראשי כ- שיעור התחלה אלמנט ב pom.xmlסעיף המאפיינים:

  com.baeldung.DemoApplication 

ציין זאת מאפיין זה יוערך רק אם נוסיף גם את האב-אתחול-המתנע-האב כפי ש בשלנו pom.xml.

לחלופין, ניתן להגדיר את המעמד הראשי כ- mainClass אלמנט של spring-boot-maven-plugin בקטע התוספים של שלנו pom.xml:

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

דוגמה לתצורה זו של Maven ניתן למצוא ב- GitHub.

3. Gradle

אם אנו משתמשים ב- תוסף Spring Boot Gradle, ישנן מספר תצורות שעוברות בירושה org.springframework.boot היכן נוכל לציין את המעמד העיקרי שלנו.

בתיק Gradle של הפרויקט, mainClassName יכול להתפרש בְּתוֹך springBoot חסימת תצורה. השינוי הזה שנעשה כאן נאסף על ידי bootRun ו bootJar מְשִׁימָה:

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

לחלופין, ניתן להגדיר את המעמד הראשי כ- mainClassName רכוש של bootJar משימת דרגה:

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

או כתכונה מובהקת של bootJar מְשִׁימָה:

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

שים לב שהמחלקה העיקרית שצוינה ב- bootJar בלוק התצורה משפיע רק על ה- JAR שהמשימה עצמה מייצרת. השינוי אינו משפיע על התנהגות משימות אחרות של Spring Boot Gradle כגון bootRun.

כבונוס, אם תוסף יישום Gradle מוחל על הפרויקט, mainClassName ניתן להגדיר נכס גלובלי:

mainClassName = 'com.baeldung.DemoApplication' 

אנו יכולים למצוא דוגמה לתצורות אלה של Gradle ב- GitHub.

4. שימוש ב- CLI

אנו יכולים גם לציין מחלקה ראשית דרך ממשק שורת הפקודה.

מגף האביב org.springframework.boot.loader.PropertiesLauncher מגיע עם טיעון JVM כדי לאפשר לך לעקוף את המעמד הראשי ההגיוני שנקרא מטעין.ראש:

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

5. מסקנה

ישנן יותר מכמה דרכים לציין את נקודת הכניסה ליישום Spring Boot. חשוב לדעת כי כל התצורות הללו הן רק דרכים שונות לשנות את המניפסט של קובץ JAR או WAR.

דוגמאות לקוד עבודה ניתן למצוא כאן וכאן.


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