מבנה חבילה מומלץ של פרויקט אתחול האביב

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

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

ובכל זאת, יש כמה המלצות שעלינו לזכור.

2. אין חבילת ברירת מחדל

בהתחשב בעובדה שהערות אביב מגף כמו @ComponentScan, @EntityScan, @ConfigurationPropertiesScan ו @ SpringBootApplication להשתמש בחבילות להגדרת מיקומי סריקה, מומלץ להימנע משימוש בחבילת ברירת המחדל - כלומר עלינו תמיד להכריז על החבילה בשיעורים שלנו.

3. מחלקה ראשית

ה @ SpringBootApplication ביאור מפעיל סריקת רכיבים עבור החבילה הנוכחית וחבילות המשנה שלה. לכן, דרך איתנה היא להתקיים המעמד העיקרי של הפרויקט שוכן בחבילת הבסיס.

ניתן להגדיר את זה, ואנחנו עדיין יכולים לאתר אותו במקום אחר על ידי ציון חבילת הבסיס באופן ידני. עם זאת, ברוב המקרים, אפשרות זו בהחלט פשוטה יותר.

יתר על כן, פרויקט מבוסס JPA יצטרך לקבל כמה הערות נוספות על המעמד הראשי:

@SpringBootApplication (scanBasePackages = "example.baeldung.com") @EnableJpaRepositories ("example.baeldung.com") @EntityScan ("example.baeldung.com")

כמו כן, שים לב כי ייתכן שיהיה צורך בתצורה נוספת.

4. עיצוב

תכנון מבנה החבילה אינו תלוי באביב אתחול. לכן, זה צריך להיות מוטל על פי דרישות הפרויקט שלנו.

אסטרטגיה פופולרית אחת היא חבילה אחר תכונה, המשפר את המודולריות ומאפשר חשיפה פרטית של חבילות בתוך חבילות משנה.

בואו ניקח, למשל, את פרויקט PetClinic. פרויקט זה נבנה על ידי מפתחי Spring כדי להמחיש את השקפתם כיצד צריך לבנות פרויקט Spring Boot משותף.

זה מאורגן בצורה חבילה לפי תכונה. לפיכך, יש לנו את החבילה העיקרית, org.springframework.samples.petclinic, וחמש חבילות משנה:

  • org.springframework.samples.petclinic.דֶגֶם
  • org.springframework.samples.petclinic.בעלים
  • org.springframework.samples.petclinic.מערכת
  • org.springframework.samples.petclinic.וטרינר
  • org.springframework.samples.petclinic.לְבַקֵר

כל אחד מהם מייצג תחום או תכונה של היישום, קיבוץ כיתות משולבות מאוד בפנים ומאפשר לכידות גבוהה.

5. מסקנה

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


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