יצירת Starter מותאם אישית עם Spring Boot

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

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

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

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

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

2. מחיקת תצורה אוטומטית של אביב אתחול האביב

2.1. שיעורי תצורה אוטומטית

כאשר אתחול האביב מתחיל, הוא מחפש קובץ בשם אביב.מפעלים במסלול הכיתה. קובץ זה ממוקם ב META-INF מַדרִיך. בואו נסתכל על קטע מקובץ זה מפרויקט האביב-אתחול-תצורה אוטומטית:

# תצורה אוטומטית של org.springframework.boot.autoconfigure.EnableAutoConfiguration = \ org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration, \ org.springframework.boot.autoconfigure.cassandra.CassandraAutoConfiguration, \ orgboot. MongoAutoConfiguration, \ org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration

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

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

אתחול מותנה זה מופעל על ידי ה- @ConditionalOnClass ביאור. בואו נסתכל על קטע הקוד מ- MongoAutoConfiguration בכיתה כדי לראות את השימוש בה:

@Configuration @ConditionalOnClass (MongoClient.class) @EnableConfigurationProperties (MongoProperties.class) @ConditionalOnMissingBean (type = "org.springframework.data.mongodb.MongoDbFactory") מעמד ציבורי MongoAutoConfiguration {// קוד תצורה}

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

2.2. מאפיינים מותאמים אישית מה- application.properties קוֹבֶץ

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

בואו נראה איך זה עובד.

בקטע הקוד של MongoAutoConfiguration, @EnableConfigurationProperties ההערה מוכרזת עם MongoProperties מחלקה המשמשת כמכולה למאפיינים מותאמים אישית:

@ConfigurationProperties (קידומת = "spring.data.mongodb") מעמד ציבורי MongoProperties {מארח מחרוזת פרטי; // שדות אחרים עם גטרים וקובעים סטנדרטיים}

הקידומת בתוספת שם השדה הופכים את שמות המאפיינים ב- application.properties קוֹבֶץ. אז, כדי להגדיר את מנחה עבור MongoDB, אנחנו רק צריכים לכתוב את הדברים הבאים בקובץ המאפיינים:

spring.data.mongodb.host = localhost

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

3. יצירת Starter בהתאמה אישית

בהתבסס על המושגים בסעיף 2, כדי ליצור סטרטר מותאם אישית עלינו לכתוב את הרכיבים הבאים:

  1. מחלקה לתצורה אוטומטית של הספרייה שלנו יחד עם מחלקת מאפיינים לתצורה מותאמת אישית.
  2. פתיחה פום להביא את התלות של הספרייה ואת פרויקט התצורה האוטומטית.

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

3.1. מודול התצורה האוטומטית

נקרא למודול התצורה האוטומטי שלנו הגדר-קפיץ-אתחול-תצורה אוטומטית. למודול זה יהיו שני כיתות עיקריות כלומר גרטר נכסים אשר יאפשר הגדרת מאפיינים מותאמים אישית דרך application.properties קובץ ו GreeterAutoConfiguartion אשר תיצור את השעועית עבור מברך סִפְרִיָה.

בואו נסתכל על הקוד של שני השיעורים:

@ConfigurationProperties (קידומת = "baeldung.greeter") מחלקה ציבורית GreeterProperties {private String userName; פרטי מחרוזת morningMessage; פרטי מחרוזת מחרוזת הודעה; ערב מחרוזת פרטי הודעה; לילה מחרוזת פרטי הודעה; // סטרים וקובעים סטנדרטיים}
@Configuration @ConditionalOnClass (Greeter.class) @EnableConfigurationProperties (GreeterProperties.class) מחלקה ציבורית GreeterAutoConfiguration {@ אוטומטית פרטית GreeterProperties greeterProperties; @Bean @ConditionalOnMissingBean ציבור GreetingConfig greeterConfig () {מחרוזת userName = greeterProperties.getUserName () == null? System.getProperty ("user.name"): greeterProperties.getUserName (); // .. GreetingConfig greetingConfig = GreetingConfig חדש (); greetingConfig.put (USER_NAME, userName); // ... return greetingConfig; } @Bean @ConditionalOnMissingBean שלום לברך (GreetingConfig greetingConfig) {להחזיר Greeter חדש (greetingConfig); }}

עלינו להוסיף גם א אביב.מפעלים קובץ ב- src / main / resources / META-INF ספריה עם התוכן הבא:

org.springframework.boot.autoconfigure.EnableAutoConfiguration = \ com.baeldung.greeter.autoconfigure.GreeterAutoConfiguration

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

ה @ConditionalOnMissingBean ביאור יבטיח כי השעועית הזו תיווצר רק אם הם עדיין לא קיימים. זה מאפשר למפתחים לעקוף לחלוטין את השעועית המוגדרת אוטומטית על ידי הגדרת שלהם באחת מה @תְצוּרָה שיעורים.

3.2. יוצר pom.xml

עכשיו בואו ניצור את המתנע פום אשר יביא את התלות עבור מודול התצורה האוטומטית וספריית המברך.

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

 4.0.0 com.baeldung greeter-spring-boot-starter 0.0.1-SNAPSHOT UTF-8 0.0.1-SNAPSHOT 2.2.6.RELEASE org.springframework.boot spring-boot-starter $ {spring-boot.version} com .baeldung מברך-אביב-אתחול-תצורה אוטומטית $ {project.version} com.baeldung מברך $ {greeter.version} 

3.3. באמצעות המתנע

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

 com.baeldung greeter-spring-boot-starter $ {greeter-starter.version} 

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

בואו ונשנה גם כמה מערכי ברירת המחדל של ה- גרטר נכסים על ידי הגדרתם ב application.properties קובץ עם baeldung.greeter קידומת:

baeldung.greeter.userName = Baeldung baeldung.greeter.afternoonMessage = Woha \ אחר הצהריים

לבסוף, בואו נשתמש ב- גרטר שעועית ביישום שלנו:

@SpringBootApplication מחלקה ציבורית GreeterSampleApplication מיישמת את CommandLineRunner {@ Greeter פרטית מברכת; ריק סטטי ציבורי ראשי (String [] args) {SpringApplication.run (GreeterSampleApplication.class, args); } @ עקירה ריקה בטלנית ציבורית (מחרוזת ... טענות) זורקת חריג {הודעת מחרוזת = greeter.greet (); System.out.println (הודעה); }}

4. מסקנה

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

קוד המקור השלם לכל המודולים שיצרנו במאמר זה ניתן למצוא באתר GitHub.


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