SpringBoot

내장 웹 서버

Jungsoomin :) 2020. 10. 2. 19:40

스프링 부트는 서버가 아니다.

 

  • 서버 객체를 생성하는 것
  • 포트설정
  • 톰캣에 컨텍스트 추가
  • 서블릿 만들기
  • 톰캣에 서블릿 추가
  • 컨텍스트에 서블릿 맵핑
  • 톰캣 실행 및 대기

이 모든 과정을 상세하고 유연하게 설정하고 실행해주는 것스프링 부트자동 설정이다.

 


자동 설정 과 관련된 내용이다.

톰캣 설정시 자동 설정 Tomcat 객체가 만들어지고 Property 설정클래스에서 property 파일을 읽어 들여 사용하는 것이다.


다른 Container 는 어떻게 쓰는가.

<exclusion> 태그spring-boot-starter-tomcat 을 제외

 

undertow 를 의존에 추가해 Container 를 변경한 모습.

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

웹서버 사용하지 않기

스프링 부트웹관련 의존이 있다면 웹 어플리케이션을 만든다.

 

appliation.properties 파일에 정의

#spring.main.web-application-type = none
#server.port = 7070
server.port = 0
  • server.port : 서버 포트를 변경
  • server.port : 0을 주면 랜덤 포트로 서버를 기동

랜덤 서버포트 추출

ApplicationListener 구현 클래스로 ServletWebServetInitializedEvent 를 받아 port 를 추출하는 모습.

@Component
public class PortListener implements ApplicationListener<ServletWebServerInitializedEvent> {

    @Override
    public void onApplicationEvent(ServletWebServerInitializedEvent event) {
        ServletWebServerApplicationContext context = event.getApplicationContext();
        int port = context.getWebServer().getPort();
        System.out.println(port);
        }
 }

'SpringBoot' 카테고리의 다른 글

외부설정  (0) 2020.10.03
SpringApplication 클래스  (0) 2020.10.03
독립적으로 실행가능한 JAR  (0) 2020.10.03
자동 설정 구현.2  (0) 2020.10.02
자동 설정 구현.1  (0) 2020.10.02