Artikel ini secara komprehensif menganalisis kitaran hayat kacang spring, yang merangkumi semua antara muka kitaran hayat yang berkaitan dan kaedah yang meliputi antara muka beanfactory untuk mempersembahkan sepenuhnya proses operasi kacang.
(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>
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>
@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!