תצורת כור אתחול האביב

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

במדריך זה נבחן אפשרויות תצורה שונות עבור שרת כור Netty ביישום Spring Boot. בסופו של דבר תהיה לנו יישום המציג גישות תצורה שונות.

2. מהו הכור נטי?

לפני שנתחיל, בואו נסתכל מהו הכור Netty ואיך זה קשור ל- Spring Boot.

הכור נטי הוא מסגרת יישומי רשת אסינכרונית מונעת אירועים. הוא מספק לקוחות ושרתים של TCP, HTTP ו- UDP שאינם חוסמים ומוכנים ללחץ אחורי. כפי שהשם מרמז, הוא מבוסס על מסגרת Netty.

עכשיו, בואו נראה איפה האביב ומגף האביב נכנסים לתמונה.

Spring WebFlux הוא חלק ממסגרת Spring ומספק תמיכה בתכנות תגובתי ליישומי אינטרנט. אם אנו משתמשים ב- WebFlux ביישום Boot Boot, מגף אביבמגדיר אוטומטית את התצורההכור Netty כשרת ברירת המחדל. בנוסף לכך, אנו יכולים להוסיף במפורש את Reactor Netty לפרויקט שלנו, ו- Spring Boot צריך שוב להגדיר אותו באופן אוטומטי.

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

3. תלות

ראשית, נוסיף את התלות הנדרשת של Maven.

כדי להשתמש בשרת Reactor Netty, נוסיף את ה- אביב-אתחול-התחלה-ווב-שטף כתלות בקובץ ה- pom שלנו:

 org.springframework.boot spring-boot-starter-webflux 

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

4. תצורת שרת

4.1. שימוש בקבצי מאפיינים

כאפשרות הראשונה, אנו יכולים להגדיר את שרת Netty באמצעות קבצי מאפיינים. Spring Boot חושף חלק מתצורות השרת הנפוצות ב- Windows יישום קובץ מאפיינים:

בואו נגדיר את יציאת השרת ב application.properties:

server.port = 8088

או שהיינו יכולים לעשות את אותו הדבר ב application.yml:

שרת: יציאה: 8088

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

4.2. שימוש בתצורה פרוגרמטית

עכשיו, בואו נסתכל איך אנו יכולים להגדיר את שרת ה- Netty המשובץ שלנו באמצעות קוד. למטרה זו, Spring Boot נותן לנו את WebServerFactoryCustomizer ו NettyServerCustomizer שיעורים.

בואו נשתמש בכיתות אלה כדי להגדיר את יציאת Netty כפי שעשינו בעבר עם קובץ המאפיינים שלנו:

מחלקה ציבורית @Component NettyWebServerFactoryPortCustomizer מיישם את WebServerFactoryCustomizer {@Override public void customize (NettyReactiveWebServerFactory serverFactory) {serverFactory.setPort (8088); }}

Spring Boot יאסוף את רכיב ההתאמה האישית של המפעל במהלך ההפעלה ויגדיר את נמל השרת.

לחלופין, אנו יכולים ליישם NettyServerCustomizer:

מחלקה סטטית פרטית PortCustomizer מיישמת את NettyServerCustomizer {יציאת פרטי פרטית סופית; PortCustomizer פרטי (int port) {this.port = port; } @Override HttpServer ציבורי החל (HttpServer httpServer) {החזר httpServer.port (יציאה); }}

והוסף אותו למפעל השרתים:

serverFactory.addServerCustomizers (PortCustomizer חדש (8088));

שתי גישות אלה מעניקות לנו גמישות רבה בעת קביעת התצורה של שרת הכור Netty המשובץ שלנו.

יתר על כן, אנו יכולים גם לגשת ל- ServerBootstrap כיתה ממסגרת Netty ולעשות את ההתאמות האישיות שלנו שם:

מחלקה סטטית פרטית EventLoopNettyCustomizer מיישמת את NettyServerCustomizer {@Override Public HttpServer apply (HttpServer httpServer) {EventLoopGroup parentGroup = new NioEventLoopGroup (); EventLoopGroup childGroup = NioEventLoopGroup חדש (); החזר httpServer.tcpConfiguration (tcpServer -> tcpServer .bootstrap (serverBootstrap -> serverBootstrap .group (parentGroup, childGroup) .channel (NioServerSocketChannel.class))); }}

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

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

@Bean NettyReactiveWebServerFactory הציבורי nettyReactiveWebServerFactory () {NettyReactiveWebServerFactory webServerFactory = חדש NettyReactiveWebServerFactory (); webServerFactory.addServerCustomizers (חדש EventLoopNettyCustomizer ()); להחזיר את webServerFactory; }

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

5. תצורת SSL

בואו נראה כיצד נוכל להגדיר SSL.

נשתמש ב- SslServerCustomizer class שהוא יישום נוסף של NettyServerCustomizer:

מחלקה ציבורית @Component NettyWebServerFactorySslCustomizer מיישם את WebServerFactoryCustomizer {@Override public void customize (NettyReactiveWebServerFactory serverFactory) {Ssl ssl = new Ssl (); ssl.setEnabled (נכון); ssl.setKeyStore ("classpath: sample.jks"); ssl.setKeyAlias ​​("כינוי"); ssl.setKeyPassword ("סיסמה"); ssl.setKeyStorePassword ("סוד"); Http2 http2 = Http2 חדש (); http2.setEnabled (שקר); serverFactory.addServerCustomizers (SslServerCustomizer חדש (ssl, http2, null)); serverFactory.setPort (8443); }}

כאן הגדרנו את המאפיינים הקשורים לחנות המפתח, השבתנו HTTP / 2, והגדרנו את היציאה ל- 8443.

6. תצורת יומן הגישה

כעת נבדוק כיצד אנו יכולים להגדיר רישום גישה באמצעות Logback.

Spring Boot מאפשר לנו להגדיר רישום גישה בקובץ מאפייני היישום עבור Tomcat, Jetty ו- Undertow. עם זאת, ל- Netty אין עדיין תמיכה זו.

כדי לאפשר רישום גישה ל- Netty, אנחנו צריכים להגדיר-Dreactor.netty.http.server.accessLogEnabled = נכון בעת הפעלת היישום שלנו:

mvn spring-boot: run -Dreactor.netty.http.server.accessLogEnabled = true

7. מסקנה

במאמר זה סקרנו כיצד להגדיר את שרת Reactor Netty ביישום Spring Boot.

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

לבסוף, קוד המקור של מאמר זה זמין ב- Github.


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