הגדר תצורת יישום אינטרנט של אתחול האביב

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

מגף האביב יכול לעשות הרבה דברים; במדריך זה, נעבור על כמה מאפשרויות התצורה המעניינות יותר ב- Boot.

2. מספר הנמל

ביישומים עצמאיים ראשיים, יציאת ה- HTTP הראשית ברירת מחדל היא 8080; אנו יכולים להגדיר בקלות את Boot לשימוש ביציאה אחרת:

server.port = 8083

ולגבי תצורה מבוססת YAML:

שרת: יציאה: 8083

אנו יכולים גם להתאים אישית את יציאת השרת בתכנות:

מחלקה ציבורית @Component CustomizationBean מיישם את WebServerFactoryCustomizer {@Override public void customize (ConfigurableServletWebServerFactory container) {container.setPort (8083); }}

3. נתיב ההקשר

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

server.servlet.contextPath = / springbootapp

ולתצורה מבוססת YAML:

שרת: servlet: contextPath: / springbootapp

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

מחלקה ציבורית @Component CustomizationBean מיישם את WebServerFactoryCustomizer {@Override public void customize (ConfigurableServletWebServerFactorycontainer) {container.setContextPath ("/ springbootapp"); }}

4. עמוד השגיאה של התווית הלבנה

Spring Boot רושם אוטומטית א BasicErrorController שעועית אם אינך מציין יישום מותאם אישית כלשהו בתצורה.

עם זאת, ניתן להגדיר כמובן את בקר ברירת המחדל הזה:

מחלקה ציבורית MyCustomErrorController מיישם ErrorController {פרטית סטטית סופית מחרוזת PATH = "/ error"; @GetMapping (value = PATH) שגיאת מחרוזת ציבורית () {להחזיר "מקלט שגיאה"; } @Override מחרוזת ציבורית getErrorPath () {להחזיר PATH; }}

5. התאם אישית את הודעות השגיאה

אתחול מספק /שְׁגִיאָה מיפויים כברירת מחדל כדי לטפל בשגיאות בצורה הגיונית.

אם ברצונך להגדיר דפי שגיאה ספציפיים יותר, יש תמיכה טובה ב- DSL Java אחיד להתאמה אישית של טיפול בשגיאות:

מחלקה ציבורית @Component CustomizationBean מיישם את WebServerFactoryCustomizer {@Override public void customize (ConfigurableServletWebServerFactorycontainer) {container.addErrorPages (new ErrorPage (HttpStatus.BAD_REQUEST, "/ 400")); container.addErrorPages (ErrorPage חדש ("/ errorHaven")); }}

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

ופשוט מאוד / errorHaven יישום:

@GetMapping ("/ errorHaven") מחרוזת errorHeaven () {return "הגעת למקלט של שגיאות !!!"; }

תְפוּקָה:

הגעתם למקלט הטעויות !!!

6. כבה יישום אתחול באופן פרוגרמטי

באפשרותך לכבות תוכנת אפליקציית אתחול בעזרת אביב יישום. יש לזה סטטי יְצִיאָה() שיטה שלוקחת שני טיעונים: ApplicationContext ו ExitCodeGenerator:

@Autowired חלל ריק shutDown (ExecutorServiceExitCodeGenerator exitCodeGenerator) {SpringApplication.exit (applicationContext, exitCodeGenerator); }

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

7. הגדר את רמות הרישום

אתה יכול בקלות כוון את רמות הרישום ביישום אתחול; החל מגרסה 1.2.0 ואילך, תוכלו להגדיר את רמת היומן בקובץ המאפיינים הראשי:

logging.level.org.springframework.web: DEBUG logging.level.org.hibernate: ERROR

ובדיוק כמו באפליקציית Spring רגילה - תוכלו להפעיל מערכות כניסה שונות לוגבק, log4j, log4j2וכו 'על ידי הוספת קובץ ה- XML ​​או המאפיינים המותאמים להם בכיתה והגדרת הספריות ב- pom.

8. רשום סרוולט חדש

אם אתה פורס את היישום בעזרת השרת המשובץ, אתה יכול לרשום Servlets חדשים ביישום אתחול על ידי חשיפתם כשעועית מהתצורה המקובלת:

@Bean שלום HelloWorldServlet helloWorld () {להחזיר HelloWorldServlet חדש (); }

לחלופין, אתה יכול להשתמש ב- ServletRegistrationBean:

@Bean ציבורי SpringHelloServletRegistrationBean servletRegistrationBean () {SpringHelloServletRegistrationBean שעועית = חדש SpringHelloServletRegistrationBean (חדש SpringHelloWorldServlet (), "/ springHelloWorld / *"); bean.setLoadOnStartup (1); bean.addInitParameter ("הודעה", "מסר מיוחד של SpringHelloWorldServlet"); שעועית להחזיר; }

9. הגדר את הגדרת המזח או Undertow ביישום האתחול

מגפי האביב המתחילים בדרך כלל משתמשים Tomcat כשרת המשובץ המוגדר כברירת מחדל. אם יש לשנות את זה - תוכל לא לכלול את התלות ב- Tomcat ולכלול במקום זאת את Jetty או Undertow:

הגדרת התצורה של המזח

 org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-tomcat org.springframework.boot spring-boot-starter-jetty 
@Bean JettyEmbeddedServletContainerFactory jettyEmbeddedServletContainerFactory () {JettyEmbeddedServletContainerFactory jettyContainer = חדש JettyEmbeddedServletContainerFactory (); jettyContainer.setPort (9000); jettyContainer.setContextPath ("/ springbootapp"); מזח חזרה מיכל; }

קביעת תצורה של Undertow

 org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-tomcat org.springframework.boot spring-boot-starter-undertow 
@Bean ציבור UndertowEmbeddedServletContainerFactory embeddedServletContainerFactory () {מפעל UndertowEmbeddedServletContainerFactory = חדש UndertowEmbeddedServletContainerFactory (); factory.addBuilderCustomizers (UndertowBuilderCustomizer חדש () {@Override Public void customize (io.undertow.Undertow.Builder builder) {builder.addHttpListener (8080, "0.0.0.0");}}); מפעל החזרה; }

10. מסקנה

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

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