> Java > java지도 시간 > 스프링-: 스프링 부츠-빙브 앤-리프 사이클-포괄적 인 excution-execution-with 관련 방법

스프링-: 스프링 부츠-빙브 앤-리프 사이클-포괄적 인 excution-execution-with 관련 방법

Patricia Arquette
풀어 주다: 2025-01-29 20:06:13
원래의
523명이 탐색했습니다.

spring-: spring-boot-application-bean-lifecycle-comprehensive-execution-order-with-related-methods 이 문서는 각 단계에서 관련 메소드를 포함하는 스프링 부트 응용 프로그램 Bean 라이프 사이클의 포괄적 인 실행 순서를 자세히 설명합니다. 1 단계 : 부트 스트래핑 (JVM & Spring Boot 초기화)

JVM 초기화 : Java Virtual Machine (JVM)이 기본 응용 프로그램 클래스를 시작하고로드합니다. SpringApplication Execution :

는 응용 프로그램 컨텍스트 생성을 시작합니다. <: :> (관련 메소드 : )

환경 구성 : > 응용 프로그램은 시스템 속성, 환경 변수, /

파일 및 명령 줄 인수에서 설정을로드합니다. 활성 및 기본 프로파일이 결정됩니다. <:> (관련 메소드 :
    , )
  1. 응용 프로그램 유형 결정 : 스프링은 응용 프로그램 유형 (웹 또는 비-비)를 식별합니다. 이는 적절한 응용 프로그램 컨텍스트를 결정합니다 : (웹) 또는 (비-비). <: :> (관련 메소드 : ) public static void main(String[] args)
  2. 자동 구성 및 SpringFactoriesLoader : 스프링은 클래스 경로에서 발견 된 종속성을 자동으로 등록합니다 (). <: :> (관련 메소드 : )
  3. 응용 프로그램 실행 리스너 : 가 트리거되어 및 SpringApplication.run()와 같은 발사 이벤트가 발생합니다. <:> (관련 메소드 : , ) SpringApplication.run()
  4. 2 단계 : 컨텍스트 초기화 및 Bean 라이프 사이클
    1. ApplicationContext 생성 :
    2. 가 생성되고 및 와 같은 주석을 사용하여 콩을 스캔합니다. <: :> (관련 메소드 : ) Bean 정의로드 : 스프링 프로세스 구성 클래스, XML 파일 또는 구성 요소 스캔에서 Bean 정의. 참고 : Bean 인스턴스는 ApplicationContext가 아직 생성되지 않습니다. <: :> (관련 메소드 : ) @ComponentScan @Configuration Bean Instantiation : AnnotationConfigApplicationContext#register() 콩은 생성자 주입 또는 공장 방법을 사용하여 인스턴스화됩니다. <: :> (관련 메소드 : )
    3. 수명주기 인식 Bean 처리 :
    4. 수명주기 인터페이스 (예 : , , )를 구현하는 Bean이 처리됩니다. <:> (관련 메소드 : , , , , 등) 조건부 콩 및 프로파일 : 또는 가 표시된 지정된 조건 또는 활성 프로파일을 기반으로 평가 및 조건부로 작성됩니다. <:> (관련 메소드 : , ) BeanDefinitionRegistry#registerBeanDefinition() 사전 초기화 후 처리 :
    5. 메소드가 실행됩니다 사용자 정의 초기화 :
    6. 주석의 , 또는 속성을 ​​사용하여 사용자 정의 초기화 로직이 실행됩니다. <:> (관련 메소드 : , ) InstantiationAwareBeanPostProcessor#postProcessBeforeInstantiation() 후 보조 후 처리 후 :
    7. 메소드가 실행됩니다
    8. 3 단계 : 응용 프로그램 시작 완료
        ApplicationContext Refresh :
      1. 는 새로 고침되어 종속성 주입을 완료합니다. 가 발사되었습니다. <: :> (관련 메소드 : ) ApplicationContext ContextRefreshedEvent 내장 웹 서버 시작 (해당되는 경우) : 웹 애플리케이션 인 경우 내장 서버 (Tomcat, Jetty, Undertow)가 시작하여 포트에 바인딩됩니다. AbstractApplicationContext#refresh()가 실행됩니다 (서블릿 기반 앱의 경우). <: :> (관련 메소드 : )
      2. CommandLinerUnner & ApplicationRunner Execution : 구현 또는
      3. 를 구현하여 시작 후 작업을 수행합니다. <:> (관련 메소드 : , ) ServletContextInitializer ApplicationReadevent : 가 해고되어 응용 프로그램이 완전히 초기화되어 요청을 처리 할 준비가되었음을 나타냅니다. <: :> (관련 메소드 : ) WebApplicationInitializer ConfigurableWebServerApplicationContext#start() 4 단계 : 콩 파괴 및 응용 프로그램 셧다운
      4. 우아한 종료 : 셧다운 프로세스가 시작되어 에 의해 제어됩니다. <: :> (관련 메소드 : ) CommandLineRunner 사전 파괴 처리 : ApplicationRunner 메소드가 실행됩니다 사용자 정의 정리 : CommandLineRunner#run(), ApplicationRunner#run() 메소드 또는 주석의
      5. 속성을 ​​사용하여 사용자 정의 청소 로직이 수행됩니다. <:> (관련 메소드 :
      6. , ) ApplicationContext Closure : ApplicationReadyEvent 가 닫히고 를 발사합니다. <: :> (관련 메소드 : ) ApplicationListener#onApplicationEvent(ApplicationReadyEvent)
      7. 사용자 정의 종료 코드 :
      는 사용자 정의 종료 코드를 설정하는 데 사용될 수 있습니다 ( 사용). <: :> (관련 메소드 : )

      5 단계 : 고급 고려 사항
        게으른 초기화 () :
      • 콩은 액세스 할 때만 생성됩니다. <: :> (관련 메소드 : ) @Lazy 원형 의존성 처리 : 사용 , 세터 주입 또는 를 사용하여 원형 의존성을 관리합니다. <: :> (관련 메소드 : ) DefaultListableBeanFactory#setAllowBeanDefinitionOverriding(false)
      • Factorybean 메커니즘 :
      • 는 동적 콩 생성을 허용합니다. <: :> (관련 메소드 : ) @Lazy 스프링 부트 액추에이터 (활성화 된 경우) : @DependsOn 모니터링 및 관리를위한 엔드 포인트를 제공합니다 (/actuator/health,/actuator/shutdown,/actuator/metrics). <: :> (관련 메소드 : ) AbstractAutowireCapableBeanFactory#doResolveDependency() 성능 최적화 : 로 시작 시간을 줄이고 쓰레기 수집을 조정하십시오.
      • 사용자 정의 응용 프로그램 리스너 () :
      • 는 시작/종료 이벤트에 연결할 수 있습니다. <: :> (관련 메소드 : ) FactoryBean#getObject() 실행 순서 요약 :
      • 부트 스트랩 핑 : jvm → 컨텍스트 초기화 : Bean Instantiation → Lifecycle Hooks → 의존성 주입 응용 프로그램 시작 : 웹 서버 시작 → 러너 실행 → 응용 프로그램 준비 종료 단계 : 사전 파괴 콜백 → 정리 → 컨텍스트가 닫힙니다
      • 이 상세한 고장은 Spring Boot Bean 라이프 사이클 및 실행 순서에 대한 포괄적 인 이해를 제공합니다. 이 순서를 이해하는 것은 스프링 부팅 애플리케이션을 디버깅, 최적화 및 확장하는 데 중요합니다.

위 내용은 스프링-: 스프링 부츠-빙브 앤-리프 사이클-포괄적 인 excution-execution-with 관련 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿