> Java > java지도 시간 > 스프링-: 스프링 벡스 리프 사이클-실행-주문

스프링-: 스프링 벡스 리프 사이클-실행-주문

Mary-Kate Olsen
풀어 주다: 2025-01-29 18:08:15
원래의
663명이 탐색했습니다.

이 기사는 스프링 콩의 수명주기를 종합적으로 분석합니다. 스프링 콩의 수명주기는 콩의 작동 과정을 완전히 제시하기 위해 콩 변형 인터페이스를 다루는 모든 관련 수명주기 인터페이스와 방법을 다룹니다. spring-: spring-bean-lifecycle-execution-order

I. 스프링 콩 수명주기 논리 실행 순서 (인스턴스화에서 파괴로) (파괴에 인스턴스화)
로딩 Bean 정의 로딩 (메타 데이터 처리)

구성 파일 (@Configuration), XML 파일 또는 구성 요소 스캔 (@Component)에서 Spring Bean 정의를 읽습니다. 이것은 메타 데이터 처리 단계

이며 인스턴스가 생성되지 않았습니다.

관련 방법 :

  1. Bean Instantatied (객체에 의해 생성)
    • 다음과 같은 방법을 통해 실제 Bean 객체를 만듭니다. 구성 기능은 인스턴스화되어
    • 입니다 공장 방법
    • 관련 방법 :
    • BeanDefinitionRegistry#registerBeanDefinition()
  2. 콩 이름 () 를 설정하십시오
    Bean 구현
      가 있으면 Spring은
    1. 메소드를 호출하여 Bean의 자체 이름 를 알립니다.

      이것은 전에 전에 발생했습니다. 사용 사례 : a Bean이 애플리케이션의 맥락에서 그 이름 를 알아야하는 경우.

        • Bean 클래스 로더를 설정 () Bean 가 클래스 로더에 액세스 해야하는 경우 가이 방법을 호출합니다.
        사용 : Bean 인 경우 런타임에 클래스 를 동적으로로드하십시오. InstantiationAwareBeanPostProcessor#postProcessBeforeInstantiation()

    set beanfactory
      ()
    1. 스프링 주입

      beanfactory 콩에. 사용 사례 : BeanNameAware#setBeanName(String name) 허용 Bean

      는 프로그래밍으로 다른 bean 를 얻습니다.
    2. BeanNameAware setBeanName()
    3. 환경을 설정하십시오 (
    4. )
    5. Bean이 환경 변수 및 속성에 액세스 해야하는 경우이 방법은 호출됩니다. 사용 사례 : 의 값에 동적으로 액세스하는 데 사용됩니다.
    public class MyBean implements BeanNameAware {
        @Override
        public void setBeanName(String name) {
            System.out.println("Bean Name Set: " + name);
        }
    }
    로그인 후 복사
    로그인 후 복사
    로그인 후 복사

      <置 置> <<> 내장 값 파서를 설정 <🎜
    1. (

      ) <🎜 🎜>

      • 허용 bean <🎜 배치 배치 분석 ($ {property}) <🎜 🎜> .
      • <例 例> <<> 사용 :
      • Bean이 필요할 때 가 수동으로 자리 표시자를 구문 분석하는 경우 <🎜 가 유용합니다.
    public class MyBean implements BeanNameAware {
        @Override
        public void setBeanName(String name) {
            System.out.println("Bean Name Set: " + name);
        }
    }
    로그인 후 복사
    로그인 후 복사
    로그인 후 복사

    <置 置> <<> 리소스 로더를 설정 <🎜
      (
    1. ) <🎜 🎜>

      는 동적 로딩 리소스의 경우 ApplicationContext 에만 적용됩니다. ResourceLoaderAware#setResourceLoader(ResourceLoader loader) <例 例> <<> 사용 사례 :

      파일로드, 클래스 경로 리소스 또는 외부 리소스.
      • <置 置> <<> 응용 프로그램 이벤트 게시자 <🎜 (
      • ) <🎜 🎜>를 설정합니다.
      <<> Bean이 이벤트를 게시하려면
    2. 가 필요한 경우이 방법이 호출됩니다.
    <例 例> <<> 사용 사례 : <🎜
    <🎜 🎜>와 같은 방송 이벤트에 사용됩니다.
    1. ApplicationEventPublisherAware#setApplicationEventPublisher(ApplicationEventPublisher publisher)

      <置> <<> 메시지 소스를 설정 <🎜
        (<🎜 🎜>) <🎜 🎜>
      • <<> Bean이 를 지원하기 위해 국제화 (i18n)가 필요한 경우 Spring은 MessessOURCE를 주입합니다.
      • ContextRefreshedEvent
      <置> <<> 세트 ApplicationContext
    2. (
    ) <🎜 🎜>
    Bean에 액세스 해야하는 경우 전체 스프링 applicationcontext <🎜
      에 액세스 해야하는 경우이 메소드가 호출됩니다.
    1. <例 例> <<> 예 :

      기타 콩, 환경 환경 등에 동적 액세스를 허용합니다. MessageSourceAware#setMessageSource(MessageSource source)

      • <置 置> <<> ServertContext (
      • )을 설정하십시오
      웹 컨텍스트 정보 <🎜 🎜
    2. 에 액세스하는 데 사용되는
    웹 애플리케이션 <🎜 <🎜 <🎜 <🎜 <🎜 <🎜 <🎜 <🎜 <🎜 <🎜 .
    1. ApplicationContextAware#setApplicationContext(ApplicationContext ctx)

      <始 始> <<> 초기화 전 포스트 프로세싱 <🎜
        (<🎜 🎜>) <🎜 🎜>
      • 수정 된 Bean 이전에 Bean <🎜 🎜> 전에 허용.
      • <定> <<> 사용자 정의 초기화
      <🎜 🎜>
    2. <<<> <<>

    <方法 方法> 사용자 정의
      메서드 <🎜 🎜> <的> <<> Custom
    1. ServletContextAware#setServletContext(ServletContext ctx)

      • 초기화 된 사후 처리 후 <始 始> <<>> (<🎜 🎜>) <🎜 🎜 <🎜 <🎜 <🎜 <<<<<<<<<<<<<<> Bean이 나중에 <🎜 🎜>를 초기화하도록 허용 Bean을 수정하십시오. <例 例> <<> 예 : 예 :
      • 프록시, 로그 레코드 또는 얼굴 지향 프로그래밍 (AOP) <🎜 🎜 🎜 🎜 🎜 🎜 🎜 <🎜 🎜 <🎜 <🎜 🎜 <🎜 <🎜 🎜 <🎜 🎜 <🎜 🎜 <🎜 🎜>.

    1. bean 사용 가능 <🎜 🎜>

        Bean은 가 완전히 초기화되어 있으며
      • 응용 프로그램에 사용할 수 있습니다.
    2. <、> <<> 2. 파괴 단계 (콩 수명주기를 닫음)
    <🎜 🎜> 응용 프로그램이 닫히면 스프링은 우아합니다.

    <毁> <<> 파괴되기 전의 치료 (<🎜 🎜>) <🎜 🎜>

    는 파괴 전에 청소할 수 있습니다.

    <🎜 🎜> <<> <<>
      메소드 <🎜 🎜>
    1. Bean이 구현되면 가 호출됩니다. DestructionAwareBeanPostProcessor#postProcessBeforeDestruction()

      • <定 定> <<> Custom
      • 메소드 (우선 메소드) <🎜 <🎜
    2. 는 <现 <现>보다 현대적이며
    3. 콩이 파괴되기 전에

      입니다. DisposableBean destroy()

      • DisposableBean <定 定> <<> custom destroy() (<🎜 🎜>에 정의 된 경우) <🎜 🎜>
      논리를 청소하는 대체 방법을 정의합니다.
    public class MyBean implements BeanNameAware {
        @Override
        public void setBeanName(String name) {
            System.out.println("Bean Name Set: " + name);
        }
    }
    로그인 후 복사
    로그인 후 복사
    로그인 후 복사
    1. <、 、> <<> 3, 완전한 프로세스 요약 (최종 순서)

      <🎜 🎜> ? <<>로드 콩 정의 @PreDestroy 인스턴스형 콩 (<🎜 🎜>) <🎜 🎜> <((> <<> () <🎜 🎜> <((> <<> (

      ) <🎜 🎜> <((> <<> (
        ) <🎜 🎜> <((> <<> (
      • ) <🎜 🎜> <((> <<> (DisposableBean) <🎜 🎜> <((> <<> () <🎜 🎜> <((> <<> () <🎜 🎜> <((> <<> (
      • ) <🎜 🎜> <((> <<> (
      ) <🎜 🎜> <((> <<> (
    2. ) <🎜 🎜> <((> <<> (
    ) <🎜 🎜> < /> <<> /
    public class MyBean implements BeanClassLoaderAware {
        @Override
        public void setBeanClassLoader(ClassLoader classLoader) {
            System.out.println("ClassLoader Set!");
        }
    }
    로그인 후 복사
      (
    1. ) bean 사용 가능

      destroy-method > ? @Bean () (

      )
      인터페이스 및 메소드에 대한 자세한 내용은 https://www.php.cn/link/6759d0996526ddc8e27aa550f0b806b1 를 방문하십시오. 나는 당신에게 행복한 코딩을 기원합니다! ?

위 내용은 스프링-: 스프링 벡스 리프 사이클-실행-주문의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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