>  기사  >  Java  >  SpringBoot 내장 웹 컨테이너를 사용하는 방법

SpringBoot 내장 웹 컨테이너를 사용하는 방법

PHPz
PHPz앞으로
2023-05-13 23:34:041479검색

임베디드 웹 컨테이너: 서버(Tomcat)가 애플리케이션에 내장되어 있어 외부에서 서버를 구성할 필요가 없습니다.

Principle

  • SpringBoot 프로젝트가 시작되고 웹 애플리케이션인 것으로 확인됩니다. 그리고 웹 시나리오 패키지가 소개됩니다. Tomcat

  • 웹 애플리케이션은 IOC 컨테이너 ServletWebServerApplicationContext

  • ServletWebServerApplicationContext의 웹 버전을 생성합니다. 시작할 때 ServletWebServerFactory(서블릿의 웹 서버 팩토리)를 찾으세요. , 서블릿 서버 생성에 사용)

  • ServletWebServerFactory 기본적으로 하단에 많은 웹 서버 팩토리가 있습니다.

SpringBoot 내장 웹 컨테이너를 사용하는 방법

  • 하단 레이어는 자동 구성 클래스 ServletWebServerFactoryAutoConfiguration

  • Serv을 자동으로 구성합니다. letWebServerFactoryAutoConfiguration ServletWebServerFactoryConfiguration 팩토리 구성 class

ServletWebServerFactoryConfiguration.class

SpringBoot 내장 웹 컨테이너를 사용하는 방법

  • 시스템으로 가져올 웹 서버 구성을 동적으로 결정 패키지

  • 가 Tomcat 종속성을 가져오는 경우 자동으로 Tomcat 서버 팩토리를 넣습니다. . TomcatServletWebServerFactory는 우리를 위해 Tomcat 서버 팩토리를 생성합니다.

  • Tomcat 하위 계층은 다음 서버를 지원합니다.

SpringBoot 내장 웹 컨테이너를 사용하는 방법

	@Override
	public WebServer getWebServer(ServletContextInitializer... initializers) {
		if (this.disableMBeanRegistry) {
			Registry.disableRegistry();
		}
		Tomcat tomcat = new Tomcat();
		File baseDir = (this.baseDirectory != null) ? this.baseDirectory : createTempDir("tomcat");
		tomcat.setBaseDir(baseDir.getAbsolutePath());
		Connector connector = new Connector(this.protocol);
		connector.setThrowOnFailure(true);
		tomcat.getService().addConnector(connector);
		customizeConnector(connector);
		tomcat.setConnector(connector);
		tomcat.getHost().setAutoDeploy(false);
		configureEngine(tomcat.getEngine());
		for (Connector additionalConnector : this.additionalTomcatConnectors) {
			tomcat.getService().addConnector(additionalConnector);
		}
		prepareContext(tomcat.getHost(), initializers);
		return getTomcatWebServer(tomcat);
	}

요약: 소위 임베디드 서버라고 불리는 서버를 수동으로 시작하는 방법을 프레임워크에 넣기만 하면 됩니다.

Application

1. 웹 서버 전환

Tomcat 서버 제외 및 종속성 가져오기

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

2. 서버 규칙 사용자 정의

방법 1: server

ServerProperties.class

SpringBoot 내장 웹 컨테이너를 사용하는 방법

서버에서 구성 파일을 수정합니다. .undertow.accesslog.dir=/tmp

방법 2: ConfigurableServletWebServerFactory

방법 3: ServletWebServerFactoryCustomizer Customizer

기능: 구성 파일의 값을 ServletWebServerFactory에 바인딩

SpringBoot 디자인: Customizer Transformer, 사용자 정의 가능 XXX 규칙

위 내용은 SpringBoot 내장 웹 컨테이너를 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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