Rumah >Java >javaTutorial >Spring-: Spring-Bean-Lifecycle-Execution-Order
(instantiated untuk kemusnahan)
Spring dari fail konfigurasi
(@configuration), fail XML atau imbasan komponen (@component)BeanDefinitionRegistry#registerBeanDefinition()
Fungsi konstruktif adalah instantiated
InstantiationAwareBeanPostProcessor#postProcessBeforeInstantiation()
(
Ini berlaku sebelum sebelum suntikan . BeanNameAware#setBeanName(String name)
BeanNameAware
setBeanName()
<code class="language-java">public class MyBean implements BeanNameAware { @Override public void setBeanName(String name) { System.out.println("Bean Name Set: " + name); } }</code>pada runtime.
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>
Tetapkan persekitaran 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>
)
<code class="language-java">public class MyBean implements BeanNameAware { @Override public void setBeanName(String name) { System.out.println("Bean Name Set: " + name); } }</code>
Tetapkan loader sumber (ResourceLoaderAware#setResourceLoader(ResourceLoader loader)
Jika Bean memerlukan untuk menerbitkan peristiwa ApplicationEventPublisherAware#setApplicationEventPublisher(ApplicationEventPublisher publisher)
, kaedah ini akan dipanggil.
ContextRefreshedEvent
pengantarabangsaan (i18n) untuk menyokong , Spring akan menyuntik MessageSource.
MessageSourceAware#setMessageSource(MessageSource source)
Contoh: Benarkan akses dinamik ke ApplicationContextAware#setApplicationContext(ApplicationContext ctx)
kacang lain, tetapan alam sekitar, dan lain -lain
ServletContextAware#setServletContext(ServletContext ctx)
BeanPostProcessor#postProcessBeforeInitialization()
InitializingBean
afterPropertiesSet()
selepas post -treatment posting @PostConstruct
@Bean
kemudian init-method
Ubah suai kacang. <code class="language-java">public class MyBean implements BeanClassLoaderAware { @Override public void setBeanClassLoader(ClassLoader classLoader) { System.out.println("ClassLoader Set!"); } }</code>
BeanPostProcessor#postProcessAfterInitialization()
rawatan sebelum dimusnahkan
( membolehkan membersihkan sebelum memusnahkan .
DestructionAwareBeanPostProcessor#postProcessBeforeDestruction()
akan dipanggil.
DisposableBean
destroy()
DisposableBean
custom destroy()
kaedah (kaedah pilihan) <code class="language-java">public class MyBean implements BeanNameAware { @Override public void setBeanName(String name) { System.out.println("Bean Name Set: " + name); } }</code>panggilan sebelum kacang dimusnahkan
@PreDestroy
DisposableBean
(jika ditakrifkan dalam ) <code class="language-java">public class MyBean implements BeanClassLoaderAware { @Override public void setBeanClassLoader(ClassLoader classLoader) { System.out.println("ClassLoader Set!"); } }</code>
, Ringkasan Proses Lengkap (Perintah Akhir) ?
destroy-method
@Bean
(
new Bean()
setBeanName()
(BeanNameAware
setBeanClassLoader()
/ BeanClassLoaderAware
setBeanFactory()
BeanFactoryAware
setEnvironment()
EnvironmentAware
setEmbeddedValueResolver()
(EmbeddedValueResolverAware
setResourceLoader()
ResourceLoaderAware
setApplicationEventPublisher()
ApplicationEventPublisherAware
setMessageSource()
MessageSourceAware
Saya doakan pengekodan gembira! ?Atas ialah kandungan terperinci Spring-: Spring-Bean-Lifecycle-Execution-Order. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!