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

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

Mary-Kate Olsen
Mary-Kate Olsen원래의
2025-01-29 18:08:15596검색

이 기사는 스프링 콩의 수명주기를 종합적으로 분석합니다. 스프링 콩의 수명주기는 콩의 작동 과정을 완전히 제시하기 위해 콩 변형 인터페이스를 다루는 모든 관련 수명주기 인터페이스와 방법을 다룹니다. 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이 환경 변수 및 속성에 액세스 해야하는 경우이 방법은 호출됩니다. 사용 사례 : 의 값에 동적으로 액세스하는 데 사용됩니다.
    <code class="language-java">public class MyBean implements BeanNameAware {
        @Override
        public void setBeanName(String name) {
            System.out.println("Bean Name Set: " + name);
        }
    }</code>

      내장 값 파서를 설정 (

      )

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

리소스 로더를 설정 (
  • )

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

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

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

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

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

      초기화 전 포스트 프로세싱 ()
    2. 수정 된 Bean 이전에 Bean 전에 허용.
    3. 사용자 정의 초기화

  • 사용자 정의
      메서드 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() (에 정의 된 경우)
      논리를 청소하는 대체 방법을 정의합니다.
    <code class="language-java">public class MyBean implements BeanNameAware {
        @Override
        public void setBeanName(String name) {
            System.out.println("Bean Name Set: " + name);
        }
    }</code>
    1. 3, 완전한 프로세스 요약 (최종 순서)

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

      ) (
        ) (
      • ) (DisposableBean) () () (
      • ) (
      ) (
    2. ) (
    ) /
    <code class="language-java">public class MyBean implements BeanClassLoaderAware {
        @Override
        public void setBeanClassLoader(ClassLoader classLoader) {
            System.out.println("ClassLoader Set!");
        }
    }</code>
      (
    1. ) bean 사용 가능

      destroy-method > ? @Bean () (

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

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

    성명:
    본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.