(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()
public class MyBean implements BeanNameAware { @Override public void setBeanName(String name) { System.out.println("Bean Name Set: " + name); } }
BeanClassLoaderAware#setBeanClassLoader(ClassLoader classLoader)
public class MyBean implements BeanClassLoaderAware { @Override public void setBeanClassLoader(ClassLoader classLoader) { System.out.println("ClassLoader Set!"); } }
BeanFactoryAware#setBeanFactory(BeanFactory factory)
public class MyBean implements BeanFactoryAware { @Override public void setBeanFactory(BeanFactory beanFactory) { System.out.println("BeanFactory Set!"); } }
<置> Setzen Sie den eingebetteten Wert Parser EnvironmentAware#setEnvironment(Environment environment)
(
public class MyBean implements BeanNameAware { @Override public void setBeanName(String name) { System.out.println("Bean Name Set: " + name); } }
() 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
public class MyBean implements BeanClassLoaderAware { @Override public void setBeanClassLoader(ClassLoader classLoader) { System.out.println("ClassLoader Set!"); } }
BeanPostProcessor#postProcessAfterInitialization()
.
)
DestructionAwareBeanPostProcessor#postProcessBeforeDestruction()
Ermöglicht das Aufräumen vor dem Zerstören
DisposableBean
Wenn Bean implementiert ist, wird destroy()
aufgerufen.
DisposableBean
destroy()
public class MyBean implements BeanNameAware { @Override public void setBeanName(String name) { System.out.println("Bean Name Set: " + name); } }
rufen Sie vor, bevor Bean zerstört wird. @PreDestroy
DisposableBean
<定> benutzerdefiniert public class MyBean implements BeanClassLoaderAware { @Override public void setBeanClassLoader(ClassLoader classLoader) { System.out.println("ClassLoader Set!"); } }
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!