이번에는 SpringBoot의 실행 과정을 소스 코드로 직접 살펴보려고 합니다. 지난번에는 빈들을 찾아서 객체로 만들고 후처리를 해주는 refresh 메소드를 자세히 살펴보았는데, 마지막으로 DispatcherServlet(디스패처 서블릿) 동작 과정을 코드로 살펴보려고 합니다. 많은 디자인 패턴이 적용되어 있고, 요청을 처리하는 프론트 컨트롤러이자 핵심 클래스인만큼 열심히 살펴보도록 하겠습니다. 아래의 내용은 SpringBoot 2.6.3를 기준으로 작성되었습니다. 1. DispatcherServlet(디스패처 서블릿) 동작 과정 [ DispatcherServlet(디스패처 서블릿) 동작 과정 ] 디스패처 서블릿은 모든 요청을 가장 먼저 받는 프론트 컨트롤러이다. 디스패처 서블릿의 동작 과정을 이해하기..
이번에는 SpringBoot의 실행 과정을 소스 코드로 직접 살펴보려고 합니다. 지난번에는 SpringBoot의 run 메소드를 자세히 살펴보았는데, refreshContext에 대해서는 자세히 알아보지 못했습니다. 이번에는 SpringBoot 애플리케이션 실행에 있어서 가장 중요한 refresh에 대해 알아보고자 합니다. 아래의 내용은 SpringBoot 2.6.3를 기준으로 작성되었습니다. 1. 애플리케이션 컨텍스트(ApplicationContext)의 refreshContext 동작 과정 [ refreshContext 동작 과정 ] refreshContext 메소드는 다음과 같이 구성되어 있는데, 먼저 ShutdownHook을 등록해주는 것을 볼 수 있다. private boolean registe..
이번에는 SpringBoot의 실행 과정을 소스 코드로 직접 살펴보려고 합니다. 지난번에는 SpringBoot의 SpringBootApplication 객체를 생성하고 초기화하는 과정에 대해 자세히 살펴보았습니다. 이번에는 만들어진 SpringBootApplication를 통해 run 메소드를 호출하고 실행되는 과정에 대해 자세히 살펴볼 계획입니다. 아래의 내용은 SpringBoot 2.6.3를 기준으로 작성되었습니다. 1. SpringBootApplication의 run 메소드와 실행 과정 [ SpringBootApplication의 run 메소드 ] 앞선 포스팅에서 SpringApplicaiton 클래스의 run은 다음과 같이 구성되어 있음을 살펴보았다. 이번에는 최종적으로 호출되며 실제 run 로직..
이번에는 SpringBoot의 실행 과정을 소스 코드로 직접 살펴보려고 합니다. 지난 포스팅에서는 SpringBoot의 핵심 어노테이션인 @SpringBootApplication를 먼저 자세히 살펴보았습니다. 이번에는 애플리케이션이 초기화되고 실행되는 run 메소드를 꼼꼼히 살펴볼 계획입니다. 어떠한 작업들이 진행되는지 살펴보도록 하겠습니다. 아래의 내용은 SpringBoot 2.6.3를 기준으로 작성되었습니다. 1. SpringBootApplication의 생성과 초기화 과정 [ SpringBootApplication run 메소드 호출 ] SpringBoot 프로젝트를 생성하면 메인 클래스와 메인 메소드가 만들어진다. 우리는 다음과 같이 SpringApplication의 run이라는 정적 메소드를 통..
이번에는 SpringBoot의 실행 과정을 소스 코드로 직접 살펴보려고 합니다. 지난번 애플리케이션 컨텍스트에 이어서 오늘은 @SpringBootApplication 어노테이션을 자세히 살펴보도록 하겠습니다. 아래의 내용은 SpringBoot 2.6.3를 기준으로 작성되었습니다. 1. @SpringBootApplication 어노테이션의 속성과 구성요소 [ @SpringBootApplication 어노테이션의 속성 ] SpringBoot 프로젝트를 생성하면 다음과 같은 메인 클래스와 함수가 자동으로 생성된다. 우리가 가장 먼저 주목해서 살펴볼 부분은 @SpringBootApplication 어노테이션이다. @SpringBootApplication public class TestingApplication ..