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;
}
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
thymeleaf로 HTML 페이지를 동적으로 만듭니다 (spring + gradle)지난번에는 에서 화면에 HTML을 표시했습니다. 이번에는 화면을 동적으로 움직여보고 싶기 때문에 입력한 문자를 화면에 표시시키고 싶습니다. 초보자의 비망록이므로 이상한 점 등 있으면 지적 받을 수 있으면 기쁩니다! ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.