스프링 부트는 서버가 아니다.
- 서버 객체를 생성하는 것
- 포트설정
- 톰캣에 컨텍스트 추가
- 서블릿 만들기
- 톰캣에 서블릿 추가
- 컨텍스트에 서블릿 맵핑
- 톰캣 실행 및 대기
이 모든 과정을 상세하고 유연하게 설정하고 실행해주는 것이 스프링 부트의 자동 설정이다.
자동 설정 과 관련된 내용이다.
톰캣 설정시 자동 설정 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 |