Spring Boot中的嵌入式服务器配置

简介: Spring Boot中的嵌入式服务器配置

Spring Boot中的嵌入式服务器配置

今天我们来探讨一下如何在Spring Boot中配置嵌入式服务器。

一、Spring Boot中的嵌入式服务器简介

Spring Boot内置了几种常见的服务器,如Tomcat、Jetty和Undertow。默认情况下,Spring Boot使用Tomcat作为嵌入式服务器。通过嵌入式服务器,Spring Boot应用可以以独立的Java应用程序运行,无需外部的Web服务器。

二、配置嵌入式服务器

1. 修改默认端口

默认情况下,Spring Boot使用端口8080。可以在application.propertiesapplication.yml文件中配置端口号。

application.properties

server.port=9090

application.yml

server:
  port: 9090

2. 配置Tomcat嵌入式服务器

可以通过编程方式配置Tomcat嵌入式服务器的属性。例如,配置最大线程数和连接超时时间。

代码示例

package cn.juwatech.config;

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.setPort(9090);
            factory.setContextPath("/myapp");
            factory.addConnectorCustomizers(connector -> {
   
                connector.setProperty("maxThreads", "200");
                connector.setProperty("connectionTimeout", "20000");
            });
        };
    }
}

3. 使用Jetty作为嵌入式服务器

如果希望使用Jetty作为嵌入式服务器,可以在pom.xml中引入相应的依赖,并排除Tomcat依赖。

pom.xml

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jetty</artifactId>
</dependency>

4. 使用Undertow作为嵌入式服务器

类似地,可以在pom.xml中引入Undertow的依赖,并排除Tomcat依赖。

pom.xml

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-undertow</artifactId>
</dependency>

5. 配置SSL

可以通过配置SSL来增强嵌入式服务器的安全性。需要在application.propertiesapplication.yml文件中配置SSL相关的属性。

application.properties

server.port=8443
server.ssl.key-store=classpath:keystore.p12
server.ssl.key-store-password=yourpassword
server.ssl.keyStoreType=PKCS12
server.ssl.keyAlias=tomcat

三、嵌入式服务器高级配置

1. 自定义Servlet、Filter和Listener

可以通过@Bean方式自定义Servlet、Filter和Listener。

代码示例

package cn.juwatech.config;

import javax.servlet.Filter;
import javax.servlet.Servlet;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletListenerRegistrationBean;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class WebConfig {
   

    @Bean
    public ServletRegistrationBean<Servlet> myServlet() {
   
        return new ServletRegistrationBean<>(new HttpServlet() {
   
            @Override
            protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
   
                resp.getWriter().write("Hello, this is my custom servlet!");
            }
        }, "/myServlet");
    }

    @Bean
    public FilterRegistrationBean<Filter> myFilter() {
   
        FilterRegistrationBean<Filter> registrationBean = new FilterRegistrationBean<>();
        registrationBean.setFilter((request, response, chain) -> {
   
            System.out.println("This is my custom filter");
            chain.doFilter(request, response);
        });
        registrationBean.addUrlPatterns("/*");
        return registrationBean;
    }

    @Bean
    public ServletListenerRegistrationBean<ServletContextListener> myListener() {
   
        return new ServletListenerRegistrationBean<>(new ServletContextListener() {
   
            @Override
            public void contextInitialized(ServletContextEvent sce) {
   
                System.out.println("This is my custom listener");
            }

            @Override
            public void contextDestroyed(ServletContextEvent sce) {
   
            }
        });
    }
}

四、总结

Spring Boot的嵌入式服务器配置为我们提供了灵活性和便利性。无论是使用默认的Tomcat,还是替换为Jetty或Undertow,都可以通过简单的配置来实现。同时,通过配置SSL、自定义Servlet、Filter和Listener等高级配置,可以进一步增强应用的功能和安全性。

相关文章
|
4月前
|
前端开发 Cloud Native Java
Java||Springboot读取本地目录的文件和文件结构,读取服务器文档目录数据供前端渲染的API实现
博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
Java||Springboot读取本地目录的文件和文件结构,读取服务器文档目录数据供前端渲染的API实现
|
6月前
|
XML Java 应用服务中间件
Spring Boot 两种部署到服务器的方式
本文介绍了Spring Boot项目的两种部署方式:jar包和war包。Jar包方式使用内置Tomcat,只需配置JDK 1.8及以上环境,通过`nohup java -jar`命令后台运行,并开放服务器端口即可访问。War包则需将项目打包后放入外部Tomcat的webapps目录,修改启动类继承`SpringBootServletInitializer`并调整pom.xml中的打包类型为war,最后启动Tomcat访问应用。两者各有优劣,jar包更简单便捷,而war包适合传统部署场景。需要注意的是,war包部署时,内置Tomcat的端口配置不会生效。
1747 17
Spring Boot 两种部署到服务器的方式
|
8月前
|
监控 IDE Java
如何在无需重新启动服务器的情况下在 Spring Boot 上重新加载我的更改?
如何在无需重新启动服务器的情况下在 Spring Boot 上重新加载我的更改?
561 8
|
9月前
|
SQL NoSQL Java
springboot操作nosql的mongodb,或者是如何在mongodb官网创建服务器并进行操作
本文介绍了如何在Spring Boot中操作NoSQL数据库MongoDB,包括在MongoDB官网创建服务器、配置Spring Boot项目、创建实体类、仓库类、服务类和控制器类,以及如何进行测试。
92 1
springboot操作nosql的mongodb,或者是如何在mongodb官网创建服务器并进行操作
|
9月前
|
前端开发 Java
学习SpringMVC,建立连接,请求,响应 SpringBoot初学,如何前后端交互(后端版)?最简单的能通过网址访问的后端服务器代码举例
文章介绍了如何使用SpringBoot创建简单的后端服务器来处理HTTP请求,包括建立连接、编写Controller处理请求,并返回响应给前端或网址。
158 0
学习SpringMVC,建立连接,请求,响应 SpringBoot初学,如何前后端交互(后端版)?最简单的能通过网址访问的后端服务器代码举例
|
Java 测试技术 数据库连接
Spring Boot中的嵌入式数据库使用
Spring Boot中的嵌入式数据库使用
|
前端开发 Java 应用服务中间件
Spring Boot 2.x 嵌入式 Servlet 容器
Spring Boot使用内嵌Tomcat,默认端口8080,可通过`application.properties`配置端口、上下文路径等。配置方式有两种:1) 直接在配置文件中添加`server.port`和`server.servlet.context-path`;2) 创建`WebServerFactoryCustomizer` Bean来自定义配置,如设置端口`factory.setPort(8083)`,这种方式优先级更高。
186 0
|
XML Java 应用服务中间件
springboot定制嵌入式的servlet
SpringBoot允许定制嵌入式Servlet容器,如修改配置或更换默认的Tomcat。配置可通过`application.properties`设置`server.port`和`server.tomcat.*`属性。此外,可创建`EmbeddedServletContainerCustomizer` Bean来自定义容器,例如改变端口。要替换默认的Tomcat,需排除`spring-boot-starter-tomcat`依赖,并引入`spring-boot-starter-jetty`。
116 0
|
24天前
|
存储 运维 关系型数据库
阿里云国际服务器:全球企业数字化转型的云端基石
阿里云国际服务器提供高性能、高安全和全球化部署的云服务解决方案。其高效云盘具备单盘100万IOPS性能,9个9的数据可靠性,并采用三副本冗余存储确保数据安全。覆盖25个地域、80多个可用区的全球加速网络,大幅降低跨境访问延迟。阿里云已获50多项国际认证,支持企业合规出海。通过统一控制台管理多地域架构,助力企业提升效率、降低成本,是超过200个国家和地区企业的共同选择。

热门文章

最新文章