본문 바로가기
Dev/Spring Boot

[스프링 부트 개념과 활용] 내장 웹 서버 응용 1부

by dev_jsk 2020. 8. 19.
728x90
반응형

다른 서블릿 컨테이너로 변경

기본적으로 주로 Tomcat을 사용하고 spring-boot-starter-web 의존성에 Tomcat이 들어있다.

자동설정(@ConditionalOnClass)에 의해 Tomcat용 자동설정파일이 읽혀지고 Tomcat이 만들어지고 사용된다.

 

변경 방법

// pom.xml

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <!-- Tomcat 제외 -->
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
        </exclusion>
    </exlusions>
</dependency>

<!-- Jetty 서버 추가 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jetty</artifactId>
</dependency>

* Tomcat을 제외하고 아무 서버도 추가하지 않을 경우 WebApplication으로 동작하지 않는다.

 

Jetty 서버 동작 확인

 

웹 서버 사용하지 않기

기본적으로 의존성에 Web 관련되어 있는 기술이 들어와 있으면 스프링 부트는 WebApplication으로 구동하려 한다.

 

변경 방법

// application.properties

spring.main.web-application-type=none

동작 확인

 

포트 변경하기

변경 방법

// application.properties

server.port=7070

동작 확인

 

랜덤 포트 사용하기

변경 방법

// application.properties

server.port=0

동작 확인

 

ApplicationListner<ServletWebServerInitializedEvent>

지정한 포트 혹은 랜덤 포트를 Application에서 어떻게 사용하는가?

 

사용 방법

// PortListener.java

@Component
public class PortListener implements ApplicationListener<ServletWebServerInitializedEvent> {
    // Web Server 가 초기화, 생성이 되면 해당 EventListener 호출
    @Override
    public void onApplicationEvent(ServletWebServerInitializedEvent arg0) {
        ServletWebServerApplicationContext applicationContext = arg0.getApplicationContext();
        // ServletWebServerApplicationContext 내에 WebServer 정보가 들어있다.
        System.out.println(applicationContext.getWebServer().getPort());
    }
}

동작 확인

 

Enable HTTP Response Compression

응답을 압축해서 보내는 것. 기본적으로 압축해도 좋은 타입(text/html, text/xml, text/plain, text/css)만 압축해서 보내주는게 좋다.

 

참고

https://docs.spring.io/spring-boot/docs/current/reference/html/howto.html#howto-embedded-web-servers

 

“How-to” Guides

Spring Boot has no mandatory logging dependency, except for the Commons Logging API, which is typically provided by Spring Framework’s spring-jcl module. To use Logback, you need to include it and spring-jcl on the classpath. The recommended way to do th

docs.spring.io

728x90
반응형

댓글