日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
SpringBoot嵌入式容器詳細(xì)介紹

概述

Spring Boot支持嵌入式Tomcat、Jetty和Undertow服務(wù)器。大多數(shù)開發(fā)人員使用適當(dāng)?shù)?“starter”來獲得完全配置的實(shí)例。默認(rèn)情況下,嵌入式服務(wù)器在端口8080上監(jiān)聽HTTP請(qǐng)求。

創(chuàng)新互聯(lián)公司主營(yíng)上林網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,成都app軟件開發(fā),上林h5小程序制作搭建,上林網(wǎng)站營(yíng)銷推廣歡迎上林等地區(qū)企業(yè)咨詢

默認(rèn)引入下面依賴使用Tomcat服務(wù)器。


org.springframework.boot
spring-boot-starter-web

如需要使用其它如Undertow作為服務(wù)器只需要如下依賴即可。


org.springframework.boot
spring-boot-starter-web


org.springframework.boot
spring-boot-starter-tomcat





org.springframework.boot
spring-boot-starter-undertow

Servlets, Filters, and listeners

當(dāng)使用嵌入式servlet容器時(shí),可以通過使用Spring bean或掃描servlet組件來注冊(cè)servlet、filter和servlet規(guī)范中的所有監(jiān)聽器(如HttpSessionListener)。

Registering Servlets, Filters, and Listeners as Spring Beans

任何Spring bean的Servlet、Filter或 *Listener實(shí)例都注冊(cè)到嵌入式容器中。如果你想從應(yīng)用程序中引用一個(gè)值,這可能特別方便。配置過程中的屬性。

默認(rèn)情況下,如果上下文只包含單個(gè)Servlet,則將其映射到/。在有多個(gè)servlet bean的情況下,bean名用作路徑前綴。Filter映射到/*。

如果基于約定的映射不夠靈活,可以使用ServletRegistrationBean、FilterRegistrationBean和ServletListenerRegistrationBean類進(jìn)行完全控制。

通常情況下,將Filter Bean放置無序是安全的。如果需要特定的順序,則應(yīng)該使用@Order注釋過濾器,或者讓它實(shí)現(xiàn)Ordered。你不能通過給過濾器的bean方法加上@Order注解來配置它的順序。如果不能更改過濾器類以添加@Order或?qū)崿F(xiàn)Ordered,則必須為過濾器定義一個(gè)FilterRegistrationBean,并使用setOrder(int)方法設(shè)置注冊(cè)bean的訂單。避免配置按順序讀取請(qǐng)求體的過濾器。

注:要查看應(yīng)用程序中每個(gè)過濾器的順序,請(qǐng)為web日志組啟用調(diào)試級(jí)別日志(logging.level.web=debug)。注冊(cè)過濾器的詳細(xì)信息,包括它們的順序和URL模式,將在啟動(dòng)時(shí)記錄下來。

Servlet Context Initialization

嵌入式servlet容器不會(huì)直接執(zhí)行servlet 3.0+javax.servlet.ServletContainerInitializer接口或Spring的org.springframework.web.WebApplicationInitializer接口。這樣做是有意為之,目的是降低在war中運(yùn)行的第三方庫(kù)破壞Spring Boot應(yīng)用程序的風(fēng)險(xiǎn)。

如果需要在Spring Boot應(yīng)用程序中執(zhí)行servlet上下文初始化,應(yīng)該注冊(cè)一個(gè)實(shí)現(xiàn)org.springframework.boot.web.servlet.ServletContextInitializer接口的bean。單一的onStartup方法提供了對(duì)ServletContext的訪問,如果有必要,可以很容易地將其用作現(xiàn)有WebApplicationInitializer的適配器。

掃描 Servlets, Filters, and listeners。

在使用嵌入式容器時(shí),可以通過使用@ServletComponentScan?來啟用自動(dòng)注冊(cè)帶有@WebServlet@WebFilter@WebListener注解的類。

容器之ServletWebServerApplicationContext

在底層,Spring Boot使用了另一種類型的ApplicationContext來支持嵌入式servlet容器。ServletWebServerApplicationContext是一種特殊類型的WebApplicationContext,它通過搜索單個(gè)ServletWebServerFactory bean來引導(dǎo)自己。通常TomcatServletWebServerFactory、JetttyServletWebServerFactory或UndertowServletWebServerFactory都是自動(dòng)配置的。

你通常不需要知道這些實(shí)現(xiàn)類。大多數(shù)應(yīng)用程序都是自動(dòng)配置的,并且創(chuàng)建適當(dāng)?shù)?nbsp;ApplicationContext和ServletWebServerFactory。

在嵌入式容器設(shè)置中,ServletContext被設(shè)置為服務(wù)器啟動(dòng)的一部分,該啟動(dòng)發(fā)生在應(yīng)用程序上下文初始化期間。因此,ApplicationContext中的bean不能可靠地用ServletContext進(jìn)行初始化。解決這個(gè)問題的一種方法是注入ApplicationContext作為bean的依賴項(xiàng),并僅在需要時(shí)訪問ServletContext。另一種方法是在服務(wù)器啟動(dòng)后使用回調(diào)函數(shù)。這可以使用ApplicationListener來監(jiān)聽ApplicationStartedEvent,如下所示:

public class CustomServletContextListener implements ApplicationListener {

private ServletContext servletContext;

@Override
public void onApplicationEvent(ApplicationStartedEvent event) {
ApplicationContext applicationContext = event.getApplicationContext();
this.servletContext = ((WebApplicationContext) applicationContext).getServletContext();
}

}

自定義Servlet容器

可以使用Spring環(huán)境屬性來配置公共servlet容器設(shè)置。application.properties或application.yaml文件。

常見的服務(wù)器設(shè)置包括:

  • 網(wǎng)絡(luò)設(shè)置:監(jiān)聽傳入的HTTP請(qǐng)求的端口(server.port),綁定到server.address。地址,等等。
  • Session設(shè)置:會(huì)話是否持久(server.servlet.session.persistent),會(huì)話超時(shí)(server.servlet.session.timeout),會(huì)話數(shù)據(jù)的位置(server.servlet.session.store-dir),以及會(huì)話cookie配置(server.servlet.session.cookie.*)。
  • 錯(cuò)誤管理:錯(cuò)誤頁(yè)面的位置(server.error.path)等。
  • SSL
  • HTTP compression

編程方式自定義配置

如果需要以編程方式配置嵌入式servlet容器,可以注冊(cè)一個(gè)實(shí)現(xiàn)WebServerFactoryCustomizer接口的Spring bean。WebServerFactoryCustomizer提供了對(duì)ConfigurableServletWebServerFactory的訪問,其中包括許多自定義設(shè)置方法。示例:

@Component
public class MyWebServerFactoryCustomizer implements WebServerFactoryCustomizer {

@Override
public void customize(ConfigurableServletWebServerFactory server) {
server.setPort(9000);
}

}

TomcatServletWebServerFactory,JetttyServletWebServerFactory和UndertowServletWebServerFactory是ConfigurableServletWebServerFactory的子類,它們分別為Tomcat, Jetty和Undertow提供了額外的自定義設(shè)置方法。示例:

@Component
public class MyTomcatWebServerFactoryCustomizer implements WebServerFactoryCustomizer {

@Override
public void customize(TomcatServletWebServerFactory server) {
server.addConnectorCustomizers((connector) -> connector.setAsyncTimeout(Duration.ofSeconds(20).toMillis()));
}

}

JSP限制

當(dāng)運(yùn)行一個(gè)使用嵌入式servlet容器的Spring Boot應(yīng)用程序(打包為可執(zhí)行的歸檔文件)時(shí),對(duì)JSP的支持有一些限制。

  • 使用Jetty和Tomcat,如果你使用war打包,它應(yīng)該可以正常工作。當(dāng)使用java -jar啟動(dòng)時(shí),不支持jsp。
  • Undertow不支持jsp。
  • 創(chuàng)建自定義error.jsp頁(yè)面不會(huì)覆蓋錯(cuò)誤處理的默認(rèn)視圖。應(yīng)該使用自定義錯(cuò)誤頁(yè)面。

網(wǎng)站標(biāo)題:SpringBoot嵌入式容器詳細(xì)介紹
文章分享:http://www.dlmjj.cn/article/cojjsdo.html