Springboot 시작 프로세스:SpringApplication.run () 방법 핵심 논리

이전 글에서 우리는 SpringApplication의 구조 방법을 분석했지만 SpringApplication.run ()는ConfigurableApplicationContext 대상의 실례를 되돌려야 하기 때문에 다음은run ()의 논리를 함께 보겠습니다.
run 방법의 코드가 좀 길기 때문에 우리는 비교적 부차적인 내용을 버릴 것이다.
public ConfigurableApplicationContext run(String... args) {
     
    //     Context  
    ConfigurableApplicationContext context = null;
    //      
    SpringApplicationRunListeners listeners = getRunListeners(args);
    //         
    listeners.starting();

    try {
     
        //      Environment(       application    )
        ConfigurableEnvironment environment = prepareEnvironment(listeners, applicationArguments);
        //            Context  
        context = createApplicationContext();

        //   Context       
        prepareContext(context, environment, listeners, applicationArguments, printedBanner);
        //   Context  
        refreshContext(context);
        //   Context      
        afterRefresh(context, applicationArguments);

        // Context  refresh    
        listeners.started(context);

        //   Context  refresh      
        callRunners(context, applicationArguments);
    } catch (Throwable ex) {
     }

    try {
     
        // Context    ,Runner      
        listeners.running(context);
    } catch (Throwable ex) {
     }

    return context;
}

간소화한 코드가 비교적 뚜렷해 보이니 논리를 다시 한 번 정리하자
1)스프링부터.factories 설정 파일에서 SpringApplicationRunListener 감청기를 가져오고 감청기를 시작합니다.
2) Environment 생성
3) ApplicationContext 작성
4) ApplicationContext의refresh 사전 준비
5) ApplicationContext의refresh
6) ApplicationContext의refresh 이후
7) ApplicationContext의 Refresh 릴리즈가 완료된 이벤트
8)runner 트리거
9) 마지막으로refresh완료,runner실행완료 이벤트 발표
run 방법은 Spring Application 같은 직책을 설명하고 많은 절차를 포함하지만 간단하게 보면 Application Context를 만들고 설정하기 위한 것이다.
다음은 이 몇 가지 절차에 따라run() 방법에서ConfigurableApplicationContext 대상을 어떻게 만드는지 소개할 것이다.

1. 감청기 확보 및 작동


소스 코드는 다음과 같습니다.
//  SpringApplicationRunListeners      
SpringApplicationRunListeners listeners = getRunListeners(args);
//    
listeners.starting();

Spring Application Run Listeners 인터페이스 구현 클래스를 가져옵니다.factories 파일에서 인터페이스의 실현 클래스를 찾고 반사 구조의 실례를 통해 깊이 추적하지 않습니다.
아래의 부분을 뜯어서 묘사해라.

좋은 웹페이지 즐겨찾기