Spring Boot 配置 Servlet

Spring Boot 集成了 Servlet,极大的简化了开发,一般俩说,我们只需要通过配置文件配置一个server端口就可以,以下内容了解即可


Spring Boot 提供了多种方式来修改 Servlet 的配置。

常见的方法包括:

  1. 通过 application.properties 文件进行配置
  2. 通过 Java 配置类进行配置

通过 application.properties 配置

可以在 application.properties 文件中设置一些常见的 Servlet 参数。例如:

1
2
3
4
5
6
7
8
# 设置服务器端口
server.port=8081

# 设置上下文路径
server.servlet.context-path=/myapp

# 设置session超时时间(单位:秒)
server.servlet.session.timeout=3600

通过 Java 配置类进行配置

如果你需要对 Servlet 做更复杂的配置,可以通过 Java 配置类来实现。以下是一个示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import javax.servlet.Servlet;

@Configuration
public class ServletConfig {

@Bean
public ServletRegistrationBean<Servlet> exampleServlet() {
ServletRegistrationBean<Servlet> registrationBean = new ServletRegistrationBean<>(new MyServlet(), "/example/*");
registrationBean.setLoadOnStartup(1);
registrationBean.addInitParameter("paramName", "paramValue");
return registrationBean;
}
}

在这个示例中,我们定义了一个 ServletRegistrationBean,并将自定义的 MyServlet 注册到路径 /example/*。你还可以通过 addInitParameter 方法来设置初始化参数。

自定义 Servlet

你可以创建一个自定义的 Servlet 类。例如:

1
2
3
4
5
6
7
8
9
10
11
12
13
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class MyServlet extends HttpServlet {

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.getWriter().write("Hello, this is my custom servlet!");
}
}

然后在配置类中注册这个 Servlet,如上面的 Java 配置示例所示。

使用 @ServletComponentScan 注解

你还可以使用 @ServletComponentScan 注解自动扫描并注册 Servlet。例如:

1
2
3
4
5
6
7
8
9
10
11
12
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;

@SpringBootApplication
@ServletComponentScan
public class MyApplication {

public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}

然后在你的 Servlet 类上使用 @WebServlet 注解:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet(name = "myServlet", urlPatterns = "/example/*")
public class MyServlet extends HttpServlet {

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
resp.getWriter().write("Hello, this is my custom servlet!");
}
}

通过嵌入式 Servlet 容器工厂进行高级配置

你还可以通过配置嵌入式 Servlet 容器工厂来进行更多高级配置。例如,配置 Tomcat 的连接器属性:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.boot.web.server.WebServerFactoryCustomizer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class TomcatConfig {

@Bean
public WebServerFactoryCustomizer<TomcatServletWebServerFactory> customizer() {
return factory -> factory.addConnectorCustomizers(connector -> {
connector.setProperty("maxThreads", "200");
connector.setProperty("minSpareThreads", "10");
connector.setProperty("acceptCount", "100");
});
}
}

总结

以上介绍了在 Spring Boot 中通过配置来修改 Servlet 的几种常见方法,包括通过 application.properties 文件、Java 配置类、自定义 Servlet、使用 @ServletComponentScan 注解,以及通过嵌入式 Servlet 容器工厂进行高级配置。