SpringのいくつかのPostProcessorの違いと連絡
3274 ワード
まずビーンのライフサイクルを明確にします.は、まずビーンの定義情報を登録する. は、ビーンの例を作成する. は最後にビーンを初期化し、容器に入れる. 実行する順序によって、以下のステップに分けられます.
IOC容器作成時の呼び出しの流れを確認します.
具体的な実行の順序はみんな自分で調整を中断することができます.ソースが多すぎるため、ここではもう展示しません.
BeanDefinitionRegistryPostProcessor Bean ;
BeanFactoryPostProcessor Bean ;
BeanPostProcessor Bean ;
BeanDefinitionRegistryPostProcessor
はBeanFactoryPostProcessor
のサブクラスであるので、前者を使用して後者の代わりに機能を実装することができる.IOC容器作成時の呼び出しの流れを確認します.
refresh
方法のコードは以下の通りです.// Allows post-processing of the bean factory in context subclasses.
postProcessBeanFactory(beanFactory);
// Invoke factory processors registered as beans in the context.
invokeBeanFactoryPostProcessors(beanFactory);
// Register bean processors that intercept bean creation.
registerBeanPostProcessors(beanFactory);
// Initialize message source for this context.
initMessageSource();
// Initialize event multicaster for this context.
initApplicationEventMulticaster();
// Initialize other special beans in specific context subclasses.
onRefresh();
// Check for listener beans and register them.
registerListeners();
// Instantiate all remaining (non-lazy-init) singletons.
finishBeanFactoryInitialization(beanFactory);
// Last step: publish corresponding event.
finishRefresh();
invokeBeanFactoryPostProcessors
は、登録定義情報とビーンを作成する方法を実行する.finishBeanFactoryInitialization
は、ビーンを初期化する方法を実行する.具体的な実行の順序はみんな自分で調整を中断することができます.ソースが多すぎるため、ここではもう展示しません.