מבוא ל- Bootique

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

Bootique הוא קוד פתוח קל מאוד ללא מיכל מסגרת JVM נועדה לבנות מיקרו-שירותים מדרגיים מהדור הבא. הוא בנוי על גבי שרת המזח המשובץ ותומך באופן מלא מנוחה מטפלים עם jax-rs.

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

2. תלות Maven

נתחיל להשתמש Bootique על ידי הוספת התלות הבאה ל- pom.xml:

 io.bootique.jersey bootique-jersey הידור מבחן io.bootique bootique-test 

למרות זאת, Bootique דורש גם להכריז על כמה BOM ("שטר החומר") יבוא. בגלל זה לעקוב צריך להוסיף את החלק ב pom.xml:

   io.bootique.bom bootique-bom 0.23 pom יבוא 

הגרסה האחרונה של Bootique זמין במאגר Central Maven.

כדי לבנות צנצנת ניתנת להפעלה, Bootique מסתמך על תוסף maven-shade. לכן עלינו להוסיף גם את התצורה למטה:

   org.apache.maven.plugins תוסף maven-shadow 

3. הפעלת יישום

הדרך הפשוטה ביותר להתחיל a Bootique היישום הוא להפעיל Bootiqueשל ביצוע () השיטה מהשיטה העיקרית:

App class class {public static void main (String [] args) {Bootique.app (args) .autoLoadModules () .exec (); }}

עם זאת, זה לא יפעיל את השרת המוטמע. לאחר שהקוד לעיל מופעל, יופיע היומן הבא:

שם com.baeldung.bootique.App אפשרויות -c yaml_location, --config = yaml_location מציין מיקום תצורת YAML, שיכול להיות נתיב קובץ או URL. -h, --help מדפיס הודעה זו. -H, --help-config מדפיס מידע על מודולי יישומים ואפשרויות התצורה שלהם. -s, - server מפעיל את שרת המזח.

אלה אינם אלא טיעוני התוכנית הזמינים שמצורפים אליהם מראש Bootique.

השמות מסבירים את עצמם; לפיכך, כדי להפעיל את השרת עלינו לעבור גם –S אוֹ -שרת השרת יפעל והפעלתו יציאת ברירת מחדל 8080.

4. מודולים

Bootique יישומים נעשים עם אוספי "מודולים". ב Bootiqueהמונח "מודול הוא ספריית Java המכילה קצת קוד" מה שאומר שהוא מתייחס לכל שירות כאל מודול. זה משתמש Google Guice להזרקת תלות.

כדי לראות כיצד זה עובד, בואו ניצור ממשק אחד:

ממשק ציבורי HelloService {שמור בוליאני (); }

כעת עלינו ליצור יישום:

מחלקה ציבורית HelloServiceImpl מיישמת את HelloService {@Override שמור בוליאני ציבורי () {return true; }}

ישנן שתי דרכים בהן אנו יכולים לטעון את המודול. הראשון הוא להשתמש רעיוןשל מודול הממשק, והשני הוא באמצעות Bootiqueשל BQModuleProvider הידוע גם בשם טעינה אוטומטית.

4.1. מודול Guice

כאן נוכל להשתמש רעיוןשל מודול ממשק לאיגוד מופעים:

מחלקה ציבורית ModuleBinder מיישמת את המודול {@Override public void configure (Binder binder) {binder .bind (HelloService.class) .to (HelloServiceImpl.class); }}

לאחר הגדרת המודול, עלינו למפות מודול מותאם אישית זה אל ה- Bootique למשל:

Bootique .app (args) .module (module) .module (ModuleBinder.class) .autoLoadModules () .exec ();

4.2. BQModuleProvider (טעינה אוטומטית)

כאן, כל שעלינו לעשות הוא להגדיר את קלסר המודול שנוצר קודם לכן BQModuleProvider:

מחלקה ציבורית ModuleProvider מיישמת את BQModuleProvider {@Override מודול ציבורי מודול () {להחזיר ModuleBinder חדש (); }}

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

אנחנו רק צריכים ליצור קובץ ב- /resources/META-INF/services/io.bootique.BQModuleProvider וכתוב את השם המלא של ה- ModuleProvider כולל שם חבילה ו Bootique ידאג לשאר:

com.baeldung.bootique.module.ModuleProvider

עכשיו, אנחנו יכולים להשתמש @לְהַזרִיק הערה לשימוש במופעי השירות בזמן הריצה:

@ הזרק HelloService helloService;

דבר אחד חשוב לציין כאן הוא שמאז שאנחנו משתמשים Bootiqueמנגנון DI משלו, אנחנו לא צריכים להשתמש Guice @ImplementedBy ביאור לאגירת מופעי השירות.

5. נקודת קצה של REST

פשוט ליצור נקודות קצה של REST באמצעות JAX-RS API:

@Path ("/") ClassCode IndexController ציבורי {@GET public String index () {return "Hello, baeldung!"; } @ POST ציבורי שמירת מחרוזות () {להחזיר "נתונים נשמרו!"; }}

כדי למפות את נקודות הקצה אל ה- Bootiqueשלה ג'רזי למשל, עלינו להגדיר a ג'רזי מודול:

מודול מודול = קלסר -> JerseyModule .extend (קלסר) .addResource (IndexController.class);

6. תצורה

אנו יכולים לספק מידע תצורה מובנה או מותאם אישית בקובץ נכסים מבוסס YAML.

לדוגמא, אם אנו רוצים להפעיל את היישום ביציאה מותאמת אישית ולהוסיף הקשר URI המוגדר כברירת מחדל 'שלום', נוכל להשתמש בתצורת YAML הבאה:

מזח: הקשר: / שלום מחבר: יציאה: 10001

כעת, בעת הפעלת היישום, עלינו לספק את מיקום הקובץ בפרמטר config:

--config = / home / baeldung / bootique / config.yml

7. כניסה

מחוץ לקופסא Bootique מגיע עם א bootique-logback מודול. כדי להשתמש במודול זה, עלינו להוסיף את התלות הבאה ב- pom.xml:

 io.bootique.logback bootique-logback 

מודול זה מגיע עם BootLogger ממשק שאנו יכולים לעקוף כדי ליישם רישום מותאם אישית:

Bootique.app (args) .module (module) .module (ModuleBinder.class) .bootLogger (BootLogger חדש () {@Override public void trace (ספק ארגונים) {// ...} @Override public void stdout (String argument ) {// ...} @ Oderride public void stderr (String args, Throwable thw) {// ...} @ Override public void stderr (String args) {// ...}}). AutoLoadModules (). ביצוע ();

כמו כן, אנו יכולים להגדיר מידע על תצורת רישום ב- config.yaml קוֹבֶץ:

log: level: להזהיר appenders: - סוג: file logFormat: '% c {20}:% m% n' file: /path/to/logging/dir/logger.log

8. בדיקות

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

הגישה הראשונה היא 'חֲזִית' גישה שגורמת לכל מקרי המבחן לפעול על חוט המבחן הראשי.

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

ניתן לאתחל את סביבת 'החזית' באמצעות BQTestFactory:

@ כלל ציבורי BQTestFactory bqTestFactory = BQTestFactory חדש ();

ניתן לאתחל את סביבת 'הרקע' באמצעות BQDaemonTestFactory:

@ כלל ציבורי BQDaemonTestFactory bqDaemonTestFactory = BQDaemonTestFactory חדש ();

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

@Test הציבור בטל givenService_expectBoolen () {זמן ריצה BQRuntime = bqTestFactory .app ("- שרת"). AutoLoadModules () .createRuntime (); שירות HelloService = runtime.getInstance (HelloService.class); assertEquals (true, service.save ()); }

9. מסקנה

במאמר זה הראינו כיצד לבנות יישום באמצעות Bootiqueמודולי הליבה. יש עוד כמה אחרים Bootique מודולים זמינים כמו bootique-jooq, bootique-kotlin, bootique-jobוכו '. הרשימה המלאה של המודולים הזמינים זמינה כאן.

כמו תמיד, קוד המקור המלא זמין ב- GitHub.


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