1.1 스프링 부트 소개
1.1.1 왜 스프링 부트 인가?
개발자가 애플리케이션을 신속히 만들어서 구동 가능하게 해주고 복잡한 설정 지옥에서 해방시켜 줌
1.1.2 스프링 부트는 무엇인가?
스프링 프레임워크와 개발자 사이에 존재하는 계층으로서 설정을 단순화해 주는 역할을 하는 것
1.1.3 스프링 부트 핵심 기능
- 빠른 시동
- 개발자가 애플리케이션에 필요한 의존 관계를 명시하기만 하면 실행가능
- 자동 구성
- 클래스패스에 있는 JAR 파일이나 여러 가지 설정 파일에 지정된 프로퍼티 정보를 바탕으로 스프링 애플리케이션에 필요한 최소한의 컴포넌트를 알아서 자동 구성
- 미리 정의된 방식
- 미리 정의된 의존 관계를 통해서 개발자가 의존성 관리에서 자유로워지고 빠른 개발이 가능
- 독립 실행형
- JAR 파일로 패키징 되어 외부 WAS 없이 독립적으로 실행할 수 있다.
- 실제 서비스 환경 사용 가능
- 애플리케이션 모니터링이나 유지 관리를 손쉽게 처리할 수 있다.
1.3 스프링 부트 시작하기
1.3.5 스프링 부트 애플리케이션 종료
스프링 부트 애플리케이션이 종료되더라도 처리 중인 요청은 처리하고 프로세스를 종료하도록 하는 방법
server.shutdown=graceful # default immediate
spring.lifecycle.timeout-per-shutdown-phase=1m # default 30s
1.4 스프링 부트 기타 개념
1.4.1 스프링 부트 스타트업 이벤트
event | description |
---|---|
ApplicationStartingEvent |
애플리케이션이 시작되고 리스너가 등로되면 발행된다. |
ApplicationEnvironmentPreparedEvent |
애플리케이션이 시작되고 Environment 가 준비되어 검사하고 수정할 수 있게 되면 발행된다. |
ApplicationContextInitializedEvent |
ApplicationContext 가 준비되고 ApplicationContextInitailizers 가 실행되면 발행된다. |
ApplicationPreparedEvent |
ApplicationContext 가 준비되고 빈이 로딩이 됐지만 아직 ApplicationContext 가 리프레시되지는 않은 시점에서 발행된다. |
ContextrefreshedEvent |
ApplicationContext 가 리프레시된 후에 발행된다. |
WebServerInitailizedEvent |
웹 서버가 준비되면 발행된다. |
ApplicationStartedEvent |
ApplicationContext 가 리프레시되고 나서 ApplicationRunner 와 CommandLineRunner 가 호출되기 전에 발행된다. |
ApplicationReadyEvent |
애플리케이션 요청을 처리할 준비가 됐을 때 SpringApplication 에 의해 발행된다. |
ApplicationFailedEvent |
애플리케이션 시작 과정에서 예외가 발생하면 발행된다. |
1.4.2 스프링 부트 애플리케이션 이벤트 감지
@EventListener
를 사용
@EventListener(ApplicationReadyEvent.class)
public void applicationReadyEvent(ApplicationReadyEvent applicationReadyEvent){
System.out.println("Application Ready Event generated at "+new Date(applicationReadyEvent.getTimestamp()));
}
- 커스텀 구현체 작성 with 람다
ApplicationStartingEvent
나 ApplicationEnvironmentPreparedEvent처럼
애플리케이션 스타트업 극초기에 발행되는 이벤트는 감지하지 못해서 커스텀 방법을 사용한다.
public static void main(String[]args){
var springApp=new SpringApplication(SpringBootExampleApplication.class);
springApp.addListeners((ApplicationListener<ApplicationStartingEvent>)event->{
System.out.println("Application Starting Event logged at "+new Date(event.getTimestamp()));
});
springApp.run(args);
}
REFERENCE
도서 - 실전 스프링 부트
'spring > boot' 카테고리의 다른 글
스프링 부트 액추에이터 메트릭 사용하기 (0) | 2023.10.24 |
---|---|
스프링 부트 자동 구성과 실패분석기 (0) | 2023.10.21 |
2장 스프링 부트 공통 작업 - 실전 스프링 부트 (1) | 2023.10.16 |