이 기사는 스프링 콩의 수명주기를 종합적으로 분석합니다. 스프링 콩의 수명주기는 콩의 작동 과정을 완전히 제시하기 위해 콩 변형 인터페이스를 다루는 모든 관련 수명주기 인터페이스와 방법을 다룹니다.
I. 스프링 콩 수명주기 논리 실행 순서 (인스턴스화에서 파괴로)
(파괴에 인스턴스화)
로딩 Bean 정의 로딩 (메타 데이터 처리)
구성 파일 (@Configuration), XML 파일 또는 구성 요소 스캔 (@Component)에서 Spring Bean 정의를 읽습니다.
이것은 메타 데이터 처리 단계
이며 인스턴스가 생성되지 않았습니다.
관련 방법 :
-
Bean Instantatied (객체에 의해 생성) -
다음과 같은 방법을 통해 실제 Bean 객체를 만듭니다.
구성 기능은 인스턴스화되어
입니다
공장 방법 -
관련 방법 : -
BeanDefinitionRegistry#registerBeanDefinition()
콩 이름 () 를 설정하십시오
Bean 구현 가 있으면 Spring은 - 메소드를 호출하여 Bean의 자체 이름 를 알립니다.
이것은 전에 전에 발생했습니다.
사용 사례 : a Bean이 애플리케이션의 맥락에서 그 이름 를 알아야하는 경우.
-
-
Bean 클래스 로더를 설정 ()
Bean 가 클래스 로더에 액세스 해야하는 경우 가이 방법을 호출합니다.
사용 : Bean 인 경우 런타임에 클래스 를 동적으로로드하십시오.
InstantiationAwareBeanPostProcessor#postProcessBeforeInstantiation()
set beanfactory ()
-
스프링 주입 beanfactory 콩에.
사용 사례 : BeanNameAware#setBeanName(String name)
허용 Bean
는 프로그래밍으로 다른 bean 를 얻습니다.
-
BeanNameAware
setBeanName()
-
환경을 설정하십시오 (
)
-
Bean이 환경 변수 및 속성에 액세스 해야하는 경우이 방법은 호출됩니다.
사용 사례 : 의 값에 동적으로 액세스하는 데 사용됩니다.
public class MyBean implements BeanNameAware {
@Override
public void setBeanName(String name) {
System.out.println("Bean Name Set: " + name);
}
}
로그인 후 복사
로그인 후 복사
로그인 후 복사
<置 置> <<> 내장 값 파서를 설정 <🎜 - (
) <🎜 🎜>
- 허용 bean <🎜 배치 배치 분석 ($ {property}) <🎜 🎜> .
<例 例> <<> 사용 : - Bean이 필요할 때 가 수동으로 자리 표시자를 구문 분석하는 경우 <🎜 가 유용합니다.
public class MyBean implements BeanNameAware {
@Override
public void setBeanName(String name) {
System.out.println("Bean Name Set: " + name);
}
}
로그인 후 복사
로그인 후 복사
로그인 후 복사
<置 置> <<> 리소스 로더를 설정 <🎜 (- ) <🎜 🎜>
는 동적 로딩 리소스의 경우 ApplicationContext 에만 적용됩니다. ResourceLoaderAware#setResourceLoader(ResourceLoader loader)
<例 例> <<> 사용 사례 :
파일로드, 클래스 경로 리소스 또는 외부 리소스.
-
-
<置 置> <<> 응용 프로그램 이벤트 게시자 <🎜 (
) <🎜 🎜>를 설정합니다.
<<> Bean이 이벤트를 게시하려면 가 필요한 경우이 방법이 호출됩니다.
<例 例> <<> 사용 사례 : <🎜
<🎜 🎜>와 같은 방송 이벤트에 사용됩니다.
-
ApplicationEventPublisherAware#setApplicationEventPublisher(ApplicationEventPublisher publisher)
<置> <<> 메시지 소스를 설정 <🎜 (<🎜 🎜>) <🎜 🎜>
-
<<> Bean이 를 지원하기 위해 국제화 (i18n)가 필요한 경우 Spring은 MessessOURCE를 주입합니다.
-
ContextRefreshedEvent
<置> <<> 세트 ApplicationContext (
) <🎜 🎜>
Bean에 액세스 해야하는 경우 전체 스프링 applicationcontext <🎜 에 액세스 해야하는 경우이 메소드가 호출됩니다. -
<例 例> <<> 예 :
기타 콩, 환경 환경 등에 동적 액세스를 허용합니다.
MessageSourceAware#setMessageSource(MessageSource source)
-
<置 置> <<> ServertContext (
)을 설정하십시오
웹 컨텍스트 정보 <🎜 🎜 에 액세스하는 데 사용되는
웹 애플리케이션 <🎜 <🎜 <🎜 <🎜 <🎜 <🎜 <🎜 <🎜 <🎜 <🎜 .
-
ApplicationContextAware#setApplicationContext(ApplicationContext ctx)
<始 始> <<> 초기화 전 포스트 프로세싱 <🎜 (<🎜 🎜>) <🎜 🎜>
-
수정 된 Bean 이전에 Bean <🎜 🎜> 전에 허용.
-
<定> <<> 사용자 정의 초기화
<🎜 🎜>
<<<> <<>
<方法 方法> 사용자 정의 메서드 <🎜 🎜>
<的> <<> Custom -
ServletContextAware#setServletContext(ServletContext ctx)
-
초기화 된 사후 처리 후 <始 始> <<>> (<🎜 🎜>) <🎜 🎜 <🎜 <🎜 <🎜 <<<<<<<<<<<<<<>
Bean이 나중에 <🎜 🎜>를 초기화하도록 허용 Bean을 수정하십시오.
<例 例> <<> 예 : 예 :
프록시, 로그 레코드 또는 얼굴 지향 프로그래밍 (AOP) <🎜 🎜 🎜 🎜 🎜 🎜 🎜 <🎜 🎜 <🎜 <🎜 🎜 <🎜 <🎜 🎜 <🎜 🎜 <🎜 🎜 <🎜 🎜>.
-
bean 사용 가능 <🎜 🎜>
Bean은 가 완전히 초기화되어 있으며 - 응용 프로그램에 사용할 수 있습니다.
<、> <<> 2. 파괴 단계 (콩 수명주기를 닫음)
<🎜 🎜>
응용 프로그램이 닫히면 스프링은 우아합니다.
<毁> <<> 파괴되기 전의 치료 (<🎜 🎜>) <🎜 🎜>
는 파괴 전에 청소할 수 있습니다.
<🎜 🎜> <<> <<> 메소드 <🎜 🎜> -
Bean이 구현되면 가 호출됩니다.
DestructionAwareBeanPostProcessor#postProcessBeforeDestruction()
-
<定 定> <<> Custom
메소드 (우선 메소드) <🎜 <🎜
는 <现 <现>보다 현대적이며 - 콩이 파괴되기 전에
는 입니다. DisposableBean
destroy()
-
DisposableBean
<定 定> <<> custom destroy()
(<🎜 🎜>에 정의 된 경우) <🎜 🎜>
논리를 청소하는 대체 방법을 정의합니다.
public class MyBean implements BeanNameAware {
@Override
public void setBeanName(String name) {
System.out.println("Bean Name Set: " + name);
}
}
로그인 후 복사
로그인 후 복사
로그인 후 복사
-
<、 、> <<> 3, 완전한 프로세스 요약 (최종 순서)
<🎜 🎜>
> ?
<<>로드 콩 정의 @PreDestroy
인스턴스형 콩 (<🎜 🎜>) <🎜 🎜>
<((> <<> () <🎜 🎜>
<((> <<> (
) <🎜 🎜>
<((> <<> () <🎜 🎜>
<((> <<> (- ) <🎜 🎜>
<((> <<> (
DisposableBean
) <🎜 🎜>
<((> <<> () <🎜 🎜>
<((> <<> () <🎜 🎜>
<((> <<> ( ) <🎜 🎜>
<((> <<> (
) <🎜 🎜>
<((> <<> ( ) <🎜 🎜>
<((> <<> (
) <🎜 🎜>
< /> <<> / public class MyBean implements BeanClassLoaderAware {
@Override
public void setBeanClassLoader(ClassLoader classLoader) {
System.out.println("ClassLoader Set!");
}
}
로그인 후 복사
(- )
bean 사용 가능
destroy-method
> ?
@Bean
()
(
)
인터페이스 및 메소드에 대한 자세한 내용은 https://www.php.cn/link/6759d0996526ddc8e27aa550f0b806b1 를 방문하십시오.
나는 당신에게 행복한 코딩을 기원합니다! ?
위 내용은 스프링-: 스프링 벡스 리프 사이클-실행-주문의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!