이 문서는 각 단계에서 관련 메소드를 포함하는 스프링 부트 응용 프로그램 Bean 라이프 사이클의 포괄적 인 실행 순서를 자세히 설명합니다. 1 단계 : 부트 스트래핑 (JVM & Spring Boot 초기화)
JVM 초기화 : Java Virtual Machine (JVM)이 기본 응용 프로그램 클래스를 시작하고로드합니다. SpringApplication Execution :
는 응용 프로그램 컨텍스트 생성을 시작합니다. <: :> (관련 메소드 : )환경 구성 : > 응용 프로그램은 시스템 속성, 환경 변수, /
파일 및 명령 줄 인수에서 설정을로드합니다. 활성 및 기본 프로파일이 결정됩니다. <:> (관련 메소드 :public static void main(String[] args)
SpringApplication.run()
ApplicationContext
가 아직 생성되지 않습니다. <: :> (관련 메소드 : ) @ComponentScan
@Configuration
Bean Instantiation : AnnotationConfigApplicationContext#register()
콩은 생성자 주입 또는 공장 방법을 사용하여 인스턴스화됩니다. <: :> (관련 메소드 : )
BeanDefinitionRegistry#registerBeanDefinition()
사전 초기화 후 처리 :
InstantiationAwareBeanPostProcessor#postProcessBeforeInstantiation()
후 보조 후 처리 후 :
ApplicationContext
ContextRefreshedEvent
내장 웹 서버 시작 (해당되는 경우) : 웹 애플리케이션 인 경우 내장 서버 (Tomcat, Jetty, Undertow)가 시작하여 포트에 바인딩됩니다. 및 AbstractApplicationContext#refresh()
가 실행됩니다 (서블릿 기반 앱의 경우). <: :> (관련 메소드 : )
ServletContextInitializer
ApplicationReadevent : 가 해고되어 응용 프로그램이 완전히 초기화되어 요청을 처리 할 준비가되었음을 나타냅니다. <: :> (관련 메소드 : ) WebApplicationInitializer
ConfigurableWebServerApplicationContext#start()
4 단계 : 콩 파괴 및 응용 프로그램 셧다운
CommandLineRunner
사전 파괴 처리 : ApplicationRunner
메소드가 실행됩니다
사용자 정의 정리 : CommandLineRunner#run()
, ApplicationRunner#run()
메소드 또는 주석의 ApplicationReadyEvent
가 닫히고 를 발사합니다. <: :> (관련 메소드 : ) ApplicationListener#onApplicationEvent(ApplicationReadyEvent)
5 단계 : 고급 고려 사항
@Lazy
원형 의존성 처리 : 사용 , 세터 주입 또는 를 사용하여 원형 의존성을 관리합니다. <: :> (관련 메소드 : ) DefaultListableBeanFactory#setAllowBeanDefinitionOverriding(false)
@Lazy
스프링 부트 액추에이터 (활성화 된 경우) : @DependsOn
모니터링 및 관리를위한 엔드 포인트를 제공합니다 (/actuator/health,/actuator/shutdown,/actuator/metrics). <: :> (관련 메소드 : ) AbstractAutowireCapableBeanFactory#doResolveDependency()
성능 최적화 : 로 시작 시간을 줄이고 쓰레기 수집을 조정하십시오.
FactoryBean#getObject()
실행 순서 요약 :
위 내용은 스프링-: 스프링 부츠-빙브 앤-리프 사이클-포괄적 인 excution-execution-with 관련 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!