Spring Boot tomcat

定製內嵌 Tomcat

設置內嵌Tomcat的端口

Spring Boot 內嵌的 Tomcat 服務器默認運行在 8080 端口。若是,咱們須要修改Tomcat的端口,咱們能夠在 src/main/resources/application.properties 中配置Tomcat信息。web

server.port=8089

設置內嵌Tomcat的最大線程數

咱們還能夠修改內嵌的 Tomcat 服務器的最大線程數。spring

server.tomcat.max-threads=1000

設置內嵌Tomcat的編碼

在一些場景下,咱們可能須要改動 Tomcat 的編碼,例如是 GBK 仍是 UTF-8。express

server.tomcat.uri-encoding = UTF-8

官方提供的經常使用配置參數

除了上面講到的3個場景外,咱們還能夠自定義設置路徑地址、 SSL等參數。apache

這裏列舉一些官方提供的經常使用配置參數,若是有特定需求,能夠進行內嵌 Tomcat 的定製。api

server.tomcat.accesslog.enabled=false # Enable access log. server.tomcat.accesslog.pattern=common # Format pattern for access logs. server.tomcat.accesslog.prefix=access_log # Log file name prefix. server.tomcat.accesslog.rename-on-rotate=false # Defer inclusion of the date stamp in the file name until rotate time. server.tomcat.accesslog.suffix=.log # Log file name suffix. server.tomcat.background-processor-delay=30 # Delay in seconds between the invocation of backgroundProcess methods. server.tomcat.basedir= # Tomcat base directory. If not specified a temporary directory will be used. server.tomcat.internal-proxies=10\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}|\\ 192\\.168\\.\\d{1,3}\\.\\d{1,3}|\\ 169\\.254\\.\\d{1,3}\\.\\d{1,3}|\\ 127\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}|\\ 172\\.1[6-9]{1}\\.\\d{1,3}\\.\\d{1,3}|\\ 172\\.2[0-9]{1}\\.\\d{1,3}\\.\\d{1,3}|\\ 172\\.3[0-1]{1}\\.\\d{1,3}\\.\\d{1,3} # regular expression matching trusted IP addresses. server.tomcat.max-threads=0 # Maximum amount of worker threads. server.tomcat.min-spare-threads=0 # Minimum amount of worker threads. server.tomcat.port-header=X-Forwarded-Port # Name of the HTTP header used to override the original port value. server.tomcat.protocol-header= # Header that holds the incoming protocol, usually named "X-Forwarded-Proto". server.tomcat.protocol-header-https-value=https # Value of the protocol header that indicates that the incoming request uses SSL. server.tomcat.redirect-context-root= # Whether requests to the context root should be redirected by appending a / to the path. server.tomcat.remote-ip-header= # Name of the http header from which the remote ip is extracted. For instance `X-FORWARDED-FOR` server.tomcat.uri-encoding=UTF-8 # Character encoding to use to decode the URI.

使用war包部署

若是咱們但願經過 war 包的方式,部署到外部的 Tomcat 服務器上, Spring Boot 也是支持的,不過須要一些額外的配置。tomcat

首先,要將最終的打包形式改成 war 包,因此須要將 packaging 的值修改成 war。springboot

<packaging>war</packaging>

接着,對依賴進行適當的配置,值得注意的是,在這裏須要移除對嵌入的 Tomcat 的依賴,這樣打出的 WAR 包中,在 lib 目錄下才不會包含 Tomcat 相關的JAR包。服務器

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <exclusions>
        <!--移除對嵌入的Tomcat的依賴-->
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<!--額外添加tomcat的依賴-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <scope>provided</scope>
</dependency>

另外,爲了保證編譯正確,還須要添加對 servlet-api 的依賴,所以添加以下的配置。app

<dependency>  
    <groupId>org.apache.tomcat</groupId>  
    <artifactId>tomcat-servlet-api</artifactId>  
    <version>7.0.42</version>  
    <scope>provided</scope>  
</dependency>

設置,打包後的項目訪問名稱,在<build>節點裏添加<finalName>內容。ide

<build>
  <finalName>springboot-web-demo</finalName>
</bulid>

修改項目啓動類,繼承SpringBootServletInitializer,以下:

package com.winner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; /** * @author winner_0715 * @date 2018/12/07 */ @SpringBootApplication public class SpringBootServerApplication extends SpringBootServletInitializer { public static void main(String[] args) { SpringApplication.run(SpringBootServerApplication.class, args); } @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(SpringBootServerApplication.class); } }

大功告成,此時,咱們能夠經過 Maven 的 "mvn clean package" 打包出一個 war 包,並部署到外部的 Tomcat 服務器運行。

總結

Spring Boot 默認使用的是 Tomcat 做爲內嵌的服務器。因此,咱們搭建一個 Web 工程將會變得很是的簡單,只須要一個 jar 包便可運行。此外,咱們還能夠對內嵌的 Tomcat 進行一些定製,例如端口、最大線程數、編碼、 SSL 等。若是,咱們仍是但願經過 war 包的方式,部署到外部的 Tomcat 服務器上, Spring Boot 也是支持的,不過須要一些額外的配置,這個配置過程也只須要幾個簡單的步驟便可實現。

相關文章
相關標籤/搜索