Spring Boot 시작 프로 세 스 정지점 프로 세 스 분석

이 글 은 주로 Spring Boot 시작 절차 의 단점 과정 분석 을 소개 하 였 으 며,예시 코드 를 통 해 매우 상세 하 게 소개 하 였 으 며,여러분 의 학습 이나 업무 에 대해 어느 정도 참고 학습 가 치 를 가지 고 있 으 므 로 필요 한 분 들 은 참고 하 시기 바 랍 니 다.
시동 입구

run 방법 따라 가기:특정한 원본 에서 SpringApplication 을 실행 하 는 기본 설정 을 사용 하 는 정적 도움말 클래스 입 니 다.
이 종 류 는 두 개의 과부하 방법 이 있 고,다른 하 나 는 여러 개의 소스 를 전달 하 는 데 쓰 인 다.일반적으로 하나의 매개 변수 방법 은 배열 방법의 특례 이다.

새로운 SpringApplication 인 스 턴 스 를 만 듭 니 다.이 프로그램의 컨 텍스트 는 특정한 소스 에서 Beans 를 불 러 옵 니 다.이 인 스 턴 스 는 run 방법 을 호출 하기 전에 맞 춤 화 됩 니 다.
웹 응용 프로그램 형식의 매 거 진:WebapplicationType,NONE(웹 응용 프로그램 이 아 닌),SERVLET(Servlet 기반 웹 응용 프로그램),REACTIVE(Reactive 기반 웹 응용 프로그램)포함
직접 jar 패키지 실행 은 웹 용 기 를 사용 하지 않 습 니 다포 함 된 Servlet 웹 용 기 를 사용 합 니 다반응 식 웹 용 기 를 사용 하 다.

setInitializers((Collection) getSpringFactoriesInstances(
  ApplicationContextInitializer.class));
Spring 공장 을 만 들 고 불 러 오 는 방법 인 스 턴 스




4.SpringApplication 을 실행 하 는 run 방법

Spring Boot 에서 자바 SPI 적용
SpringBoot 바 텀 의 자동 화 는 모두 이러한 SPI 구현 클래스 에서 이 루어 집 니 다.초기 화,모니터,가 져 오기 모니터 자동 설정,가 져 오기 필터 자동 설정,자동 설정,실패 분석 기,사용 가능 한 템 플 릿 공급 자

Spring Boot 에서 main 방식 을 찾 는 방법
이상 한 형식 으로 스 택 정 보 를 얻 고 시작 류 의 정 보 를 얻 습 니 다.

이상 은 모두 new SpringBootApplication 의 과정 입 니 다.run 방법 을 분석 하 겠 습 니 다.

/**
* Run the Spring application, creating and refreshing a new
* {@link ApplicationContext}.
*     Spring  ,         ApplicationContext
* @param args the application arguments (usually passed from a Java main method)
*       java main      
* @return a running {@link ApplicationContext}
*/
public ConfigurableApplicationContext run(String... args) {
//        ,         
StopWatch stopWatch = new StopWatch();
stopWatch.start();
//ApplicationContext Spring     ,       :1bean  2    3          4    
ConfigurableApplicationContext context = null;
Collection<SpringBootExceptionReporter> exceptionReporters = new ArrayList<>();
//headless   :      ,               
configureHeadlessProperty();
//     , run            ,     
SpringApplicationRunListeners listeners = getRunListeners(args);
//       ,SpringApplicationEvent      
listeners.starting();
try {
//       SpringApplication     
ApplicationArguments applicationArguments = new DefaultApplicationArguments(
args);
//    : servlet,reactive  java    ,  evn      
ConfigurableEnvironment environment = prepareEnvironment(listeners,
applicationArguments);
configureIgnoreBeanInfo(environment);
Banner printedBanner = printBanner(environment);
context = createApplicationContext();
exceptionReporters = getSpringFactoriesInstances(
SpringBootExceptionReporter.class,
new Class[] { ConfigurableApplicationContext.class }, context);
prepareContext(context, environment, listeners, applicationArguments,
printedBanner);
refreshContext(context);
afterRefresh(context, applicationArguments);
stopWatch.stop();
if (this.logStartupInfo) {
new StartupInfoLogger(this.mainApplicationClass)
.logStarted(getApplicationLog(), stopWatch);
}
listeners.started(context);
callRunners(context, applicationArguments);
}
catch (Throwable ex) {
handleRunFailure(context, ex, exceptionReporters, listeners);
throw new IllegalStateException(ex);
}

try {
listeners.running(context);
}
catch (Throwable ex) {
handleRunFailure(context, ex, exceptionReporters, null);
throw new IllegalStateException(ex);
}
return context;
}
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기