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等高级配置,可以进一步增强应用的功能和安全性。

相关文章
|
2月前
|
Java 测试技术 数据库连接
Spring Boot中的嵌入式数据库使用
Spring Boot中的嵌入式数据库使用
|
2月前
|
Java
软件开发常用之SpringBoot文件下载接口编写(下),Vue+SpringBoot文件上传下载预览,服务器默认上传是1M,可以调节,调节文件上传大小写法,图片预览,如何预览后下次还能看到,预览写法
软件开发常用之SpringBoot文件下载接口编写(下),Vue+SpringBoot文件上传下载预览,服务器默认上传是1M,可以调节,调节文件上传大小写法,图片预览,如何预览后下次还能看到,预览写法
|
3月前
|
运维 Java 测试技术
Spring运维之boo项目表现层测试加载测试的专用配置属性以及在JUnit中启动web服务器发送虚拟请求
Spring运维之boo项目表现层测试加载测试的专用配置属性以及在JUnit中启动web服务器发送虚拟请求
36 3
|
3月前
|
Java Maven
springboot项目打jar包后,如何部署到服务器
springboot项目打jar包后,如何部署到服务器
239 1
|
2月前
|
前端开发 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)`,这种方式优先级更高。
|
24天前
|
缓存 Java Maven
Java本地高性能缓存实践问题之SpringBoot中引入Caffeine作为缓存库的问题如何解决
Java本地高性能缓存实践问题之SpringBoot中引入Caffeine作为缓存库的问题如何解决
|
2月前
|
Java 测试技术 数据库
Spring Boot中的项目属性配置
本节课主要讲解了 Spring Boot 中如何在业务代码中读取相关配置,包括单一配置和多个配置项,在微服务中,这种情况非常常见,往往会有很多其他微服务需要调用,所以封装一个配置类来接收这些配置是个很好的处理方式。除此之外,例如数据库相关的连接参数等等,也可以放到一个配置类中,其他遇到类似的场景,都可以这么处理。最后介绍了开发环境和生产环境配置的快速切换方式,省去了项目部署时,诸多配置信息的修改。
|
2月前
|
Java 应用服务中间件 开发者
Java面试题:解释Spring Boot的优势及其自动配置原理
Java面试题:解释Spring Boot的优势及其自动配置原理
95 0
|
16天前
|
缓存 Java 数据库连接
Spring Boot 资源文件属性配置,紧跟技术热点,为你的应用注入灵动活力!
【8月更文挑战第29天】在Spring Boot开发中,资源文件属性配置至关重要,它让开发者能灵活定制应用行为而不改动代码,极大提升了可维护性和扩展性。Spring Boot支持多种配置文件类型,如`application.properties`和`application.yml`,分别位于项目的resources目录下。`.properties`文件采用键值对形式,而`yml`文件则具有更清晰的层次结构,适合复杂配置。此外,Spring Boot还支持占位符引用和其他外部来源的属性值,便于不同环境下覆盖默认配置。通过合理配置,应用能快速适应各种环境与需求变化。
26 0
|
1月前
|
XML Java 数据库连接
Spring Boot集成MyBatis
主要系统的讲解了 Spring Boot 集成 MyBatis 的过程,分为基于 xml 形式和基于注解的形式来讲解,通过实际配置手把手讲解了 Spring Boot 中 MyBatis 的使用方式,并针对注解方式,讲解了常见的问题已经解决方式,有很强的实战意义。在实际项目中,建议根据实际情况来确定使用哪种方式,一般 xml 和注解都在用。

热门文章

最新文章