>Java >java지도 시간 >SpringBoot를 다른 임베디드 서블릿 컨테이너로 전환하는 방법

SpringBoot를 다른 임베디드 서블릿 컨테이너로 전환하는 방법

王林
王林앞으로
2023-05-13 22:58:121514검색

다른 내장 서블릿 컨테이너로 전환하는 방법(Jetty 및 Undertow)

SpringBoot에서 사용하는 기본 내장 서블릿 컨테이너는 Tomcat입니다.

그러나 SpringBoot는 다른 서블릿 컨테이너도 지원합니다. 기본 Tomcat은 그 중 하나일 뿐입니다

SpringBoot. Jetty 및 Undertow도 지원

  • Jetty는 채팅과 같은 긴 링크 애플리케이션에 적합합니다Jetty适合用于长链接应用 例如聊天

  • Undertow是一个高性能非阻塞的Servlet容器 并发性能非常好 但不支持jsp

SpringBoot를 다른 임베디드 서블릿 컨테이너로 전환하는 방법

若要切换 只需要在pom文件中排除自带的Tomcat启动器 再引入其它Servlet容器的启动器即可

spring-boot-starter-web里面引入了spring-boot-starter-tomcat 因此默认使用Tomcat

因此 只需排除原先的Tomcat 再引入要添加的Servlet容器的依赖 即可:

切换成Jetty:

<!-- 引入Web模块 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <exclusions>
        <!-- 排除tomcat容器 -->
        <exclusion>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <groupId>org.springframework.boot</groupId>
        </exclusion>
    </exclusions>
</dependency>
<!-- 引入其它的Servlet容器 -->
<dependency>
    <artifactId>spring-boot-starter-jetty</artifactId>
    <groupId>org.springframework.boot</groupId>
</dependency>

SpringBoot를 다른 임베디드 서블릿 컨테이너로 전환하는 방법

Jetty启动成功

同理 切换成undertow:

<!-- 引入Web模块 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <exclusions>
        <!-- 排除tomcat容器 -->
        <exclusion>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <groupId>org.springframework.boot</groupId>
        </exclusion>
    </exclusions>
</dependency>
<!-- 引入其它的Servlet容器 -->
<dependency>
    <artifactId>spring-boot-starter-undertow</artifactId>
    <groupId>org.springframework.boot</groupId>
</dependency>

SpringBoot를 다른 임베디드 서블릿 컨테이너로 전환하는 방법

Undertow启动成功

SpringBoot web开发_嵌入式Servlet容器

1、切换嵌入式Servlet容器

1.1、SpringBoot支持的Servlet种类及其切换

1)默认支持的webServer:Tomcat、Jrtty、Undertow

2)切换服务器

SpringBoot를 다른 임베디드 서블릿 컨테이너로 전환하는 방법

<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>

1.2、原理

1)SpringBoot应用启动发现当前是Web应用。web场景包-导入tomcat

2)web应用会创建一个web版的ioc容器 ServletWebServerApplicationContext

3)ServletWebServerApplicationContext  启动的时候寻找 ServletWebServerFactory(Servlet 的web服务器工厂---> Servlet 的web服务器)

4)SpringBoot底层默认有很多的WebServer工厂;

  • TomcatServletWebServerFactory

  • JettyServletWebServerFactory

  • UndertowServletWebServerFactory

Undertow는 매우 뛰어난 기능을 갖춘 고성능 비차단 서블릿 컨테이너입니다. 동시성 성능은 좋지만 jsp를 지원하지 않습니다

SpringBoot를 다른 것으로 전환하는 방법 임베디드 서블릿 컨테이너

전환하려면

pom 파일에서 내장된 Tomcat 스타터를 제외하고 다른 서블릿 컨테이너의 스타터를 도입하기만 하면 됩니다

spring-boot-starter-web에는 spring-boot-starter-tomcat이 도입되었으므로 기본 Tomcat 사용

따라서 원본 Tomcat을 제외하고 추가할 서블릿 컨테이너의 종속성을 도입하세요.

Jetty로 전환:

#修改servlet容器
server.port=8000
#server.undertow.accesslog.dir=/tmp

SpringBoot를 다른 임베디드 서블릿 컨테이너로 전환하는 방법

Jetty가 성공적으로 시작되었습니다

Similarly switch 설명:

import org.springframework.boot.web.server.WebServerFactoryCustomizer;
import org.springframework.boot.web.servlet.server.ConfigurableServletWebServerFactory;
import org.springframework.stereotype.Component;
 
@Component
public class CustomizationBean implements WebServerFactoryCustomizer<ConfigurableServletWebServerFactory> {
 
    @Override
    public void customize(ConfigurableServletWebServerFactory server) {
        server.setPort(9000);
    }
}
SpringBoot를 다른 임베디드 서블릿 컨테이너로 전환하는 방법 Undertow가 성공적으로 시작되었습니다

SpringBoot 웹 개발_임베디드 서블릿 컨테이너

1. 내장된 서블릿 컨테이너 전환

1.1, SpringBoot에서 지원하는 서블릿 유형 및 전환

1) 기본 지원 웹 서버: Tomcat, Jrtty, Undertow

2) 서버 전환

SpringBoot를 다른 임베디드 서블릿 컨테이너로 전환하는 방법

public interface ConfigurableWebServerFactory extends WebServerFactory, ErrorPageRegistry {
    void setPort(int port); 
    void setAddress(InetAddress address); 
    void setErrorPages(Set<? extends ErrorPage> errorPages); 
    void setSsl(Ssl ssl); 
    void setSslStoreProvider(SslStoreProvider sslStoreProvider); 
    void setHttp2(Http2 http2); 
    void setCompression(Compression compression); 
    void setServerHeader(String serverHeader); 
    default void setShutdown(Shutdown shutdown) {
    }
}

1.2, 원리SpringBoot를 다른 임베디드 서블릿 컨테이너로 전환하는 방법

1) SpringBoot 애플리케이션이 시작되면 현재 웹 애플리케이션임을 알 수 있습니다. 웹 시나리오 패키지 - import tomcat2) 웹 애플리케이션은 ioc 컨테이너의 웹 버전을 생성합니다 ServletWebServerApplicationContext

🎜3) ServletWebServerApplicationContext 시작 시 ServletWebServerFactory(서블릿의 웹 서버 팩토리 ---> 서블릿의 웹 서버)🎜🎜4를 찾습니다. ) 기본적으로 SpringBoot 하단에는 많은 WebServer 팩토리가 있습니다. 🎜🎜🎜🎜TomcatServletWebServerFactory🎜🎜🎜🎜JettyServletWebServerFactory🎜🎜🎜🎜UndertowServletWebServerFactory 🎜🎜 🎜🎜 5) 하단에 바로 자동 구성 수업이 있습니다. 🎜🎜ServletWebServerFactoryAutoConfiguration import ServletWebServerFactoryConfiguration(구성 클래스)🎜🎜6) ServletWebServerFactoryConfiguration 구성 클래스는 어떤 웹 서버 패키지를 시스템으로 가져왔는지 동적으로 결정합니다. (기본값은 web-starter가 tomcat 패키지를 가져오는 것입니다.) 그리고 컨테이너에 TomcatServletWebServerFactory가 있습니다🎜🎜7) TomcatServletWebServerFactory는 Tomcat 서버를 생성하고 이를 시작합니다. TomcatWebServer의 생성자에는 초기화 메서드인 this.tomcat이 있습니다. start();🎜🎜8 ) 임베디드 서버는 서버를 시작하기 위한 코드를 수동으로 호출합니다(Tomcat Core Jar 패키지가 존재함) 🎜🎜2. 서블릿 컨테이너 사용자 정의 🎜🎜🎜2.1 구성 파일 수정 🎜🎜🎜 application.properties 구성 파일을 설정하여 서블릿 컨테이너 🎜rrreee🎜🎜2.2, WebServerFactoryCustomizer🎜🎜🎜🎜xxxxx🎜🎜Customizer🎜🎜 구현: Customizer, xxxx🎜🎜🎜의 기본 규칙을 변경할 수 있습니다. 서블릿의 응답 포트 번호를 수정합니다. 🎜WebServerFactoryCustomizer🎜를 통한 컨테이너: 🎜rrreee🎜🎜2.3 , ConfigurableServletWebServerFactory 🎜🎜🎜 🎜ConfigurableServletWebServerFactory 🎜🎜rrreee🎜🎜ConfigurableServletWebServerFactory 🎜Inter의 인터페이스 구현 클래스를 직접 사용자 정의 얼굴 구현 클래스(프레임워크의 기본 구현 클래스): 🎜🎜🎜🎜🎜By customization 🎜ConfigurableServletWebServerFactory 🎜인터페이스의 구현 클래스, 그게 바로 맞춤형 서블릿 컨테이너🎜

위 내용은 SpringBoot를 다른 임베디드 서블릿 컨테이너로 전환하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제