Dieser Artikel analysiert umfassend den Lebenszyklus von Frühlingsbohnen, der alle verwandten Lebenszyklus -Schnittstellen und -Methoden abdeckt, die die Beanfactory -Schnittstelle abdecken, um den Betriebsprozess von Bean vollständig darzustellen.
(sofort zur Zerstörung)
Spring aus der Konfigurationsdatei
(@Configuration), XML -Datei oder Komponentenscan (@component)BeanDefinitionRegistry#registerBeanDefinition()
Die konstruktive Funktion wird instanziiert
InstantiationAwareBeanPostProcessor#postProcessBeforeInstantiation()
( auf.
Dies geschah vor der Injektion BeanNameAware#setBeanName(String name)
vor .
BeanNameAware
im Kontext der Anwendung kennen muss. setBeanName()
<code class="language-java">public class MyBean implements BeanNameAware { @Override public void setBeanName(String name) { System.out.println("Bean Name Set: " + name); } }</code>
BeanClassLoaderAware#setBeanClassLoader(ClassLoader classLoader)
<code class="language-java">public class MyBean implements BeanClassLoaderAware { @Override public void setBeanClassLoader(ClassLoader classLoader) { System.out.println("ClassLoader Set!"); } }</code>
BeanFactoryAware#setBeanFactory(BeanFactory factory)
<code class="language-java">public class MyBean implements BeanFactoryAware { @Override public void setBeanFactory(BeanFactory beanFactory) { System.out.println("BeanFactory Set!"); } }</code>
Setzen Sie den eingebetteten Wert Parser EnvironmentAware#setEnvironment(Environment environment)
(
<code class="language-java">public class MyBean implements BeanNameAware { @Override public void setBeanName(String name) { System.out.println("Bean Name Set: " + name); } }</code>
() fest
ResourceLoaderAware#setResourceLoader(ResourceLoader loader)
fest
Wenn Bean ApplicationEventPublisherAware#setApplicationEventPublisher(ApplicationEventPublisher publisher)
eine Veranstaltung
ContextRefreshedEvent
Wenn Bean Internationalisierung (I18N) zur Unterstützung benötigt, wird der Frühling MessageSource injizieren. MessageSourceAware#setMessageSource(MessageSource source)
auf die gesamte Spring ApplicationContext zugreifen muss, wird diese Methode aufgerufen.
ApplicationContextAware#setApplicationContext(ApplicationContext ctx)
Beispiel:
Web -Kontextinformationen verwendet wird.
ServletContextAware#setServletContext(ServletContext ctx)
BeanPostProcessor#postProcessBeforeInitialization()
benutzerdefiniert
InitializingBean
afterPropertiesSet()
@PostConstruct
nach der initialisierten Post -Behandlung @Bean
init-method
<code class="language-java">public class MyBean implements BeanClassLoaderAware { @Override public void setBeanClassLoader(ClassLoader classLoader) { System.out.println("ClassLoader Set!"); } }</code>
BeanPostProcessor#postProcessAfterInitialization()
.
)
DestructionAwareBeanPostProcessor#postProcessBeforeDestruction()
Ermöglicht das Aufräumen vor dem Zerstören
DisposableBean
Wenn Bean implementiert ist, wird destroy()
aufgerufen.
DisposableBean
destroy()
<code class="language-java">public class MyBean implements BeanNameAware { @Override public void setBeanName(String name) { System.out.println("Bean Name Set: " + name); } }</code>
rufen Sie vor, bevor Bean zerstört wird. @PreDestroy
DisposableBean
benutzerdefiniert <code class="language-java">public class MyBean implements BeanClassLoaderAware { @Override public void setBeanClassLoader(ClassLoader classLoader) { System.out.println("ClassLoader Set!"); } }</code>
destroy-method
@Bean
Drei, die vollständige Prozessübersicht (endgültige Reihenfolge)
()
new Bean()
setBeanName()
BeanNameAware
(setBeanClassLoader()
(BeanClassLoaderAware
) setBeanFactory()
) BeanFactoryAware
setEnvironment()
EnvironmentAware
(setEmbeddedValueResolver()
(EmbeddedValueResolverAware
) setResourceLoader()
ResourceLoaderAware
setApplicationEventPublisher()
ApplicationEventPublisherAware
setMessageSource()
MessageSourceAware
setApplicationContext()
(ApplicationContextAware
) setServletContext()
) ServletContextAware
postProcessBeforeInitialization()
BeanPostProcessor
@PostConstruct
Weitere Informationen zu Schnittstelle und Methoden finden Sie unter: afterPropertiesSet()
https://www.php.cn/link/6759d0996526ddc8e27aa550f0b806b1 postProcessAfterInitialization()
BeanPostProcessor
Das obige ist der detaillierte Inhalt vonSpring-: Spring-Bean-Lifecycle-Execution-Ordnung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!