spring 용기의refresh () 방법 설명
35788 단어 java 백엔드
***1、prepareRefresh(); ***
1)、initPropertySources(); ;
2)、getEnvironment().validateRequiredProperties();
3)、this.earlyApplicationEvents = new LinkedHashSet<ApplicationEvent>(); ;
***2、this.earlyApplicationEvents = new LinkedHashSet<ApplicationEvent>(); bean ***
1)、refreshBeanFactory(); 【 】bean
beanFactory this.beanFactory = new DefaultListableBeanFactory();
this.beanFactory.setSerializationId(getId()); id
2)、getBeanFactory(); GenericApplicationContext beanFactory
3)、 beanFactory【DefaultListableBeanFactory】 ;
***3、prepareBeanFactory(beanFactory);beanFactory ( beanFactory );***
1)、 beanFactory 、
2)、 addBeanPostProcessor【ApplicationContextAwareProcessor】
3)、 EnvironmentAware、EmbeddedValueResolverAware、xxx
4)、 ; :
Beanfactory、ResourceLoader、ApplicationEventPublisher、ApplicationContext
5)、 【ApplicationListenerDetector】
6)、 AspectJ;
7)、 beanFactory :
environment【ConfigurableEnvironment】、 systemProperties【Map<String,Object>】、systemEnvironment【Map<String, Object>】
***4、postProcessBeanFactory(beanFactory); beanFactory ;【 】***
1)、 beanfactory
=================================================== beanFactory ===================================================================================
***5、invokeBeanFactoryPostProcessors(beanFactory); beanfactoryPostprocessor***
;
beanfactoryPostProcessor; beanFactory , beanFactory ( )
:beanFactoryPostProcessor、BeanDefinitionRegistryPostProcessor
1)、 invokeBeanFactoryPostProcessors【invokeBeanFactoryPostProcessors】
1)、 BeanDefinitionRegistryPostProcessor
1)、 BeanDefinitionRegistryPostProcessor
2)、 PriorityOrdered BeanDefinitionRegistryPostProcessor postProcessor.postProcessBeanDefinitionRegistry(registry);
3)、 Ordered BeanDefinitionRegistryPostProcessor postProcessor.postProcessBeanDefinitionRegistry(registry);
4)、 BeanDefinitionRegistryPostProcessor postProcessor.postProcessBeanDefinitionRegistry(registry);
2)、 BeanFactoryPostProcessor
1)、 BeanDefinitionRegistryPostProcessor
2)、 PriorityOrdered BeanPostProcessor postProcessor.postProcessBeanFactory(beanFactory);
3)、 Ordered BeanPostProcessor postProcessor.postProcessBeanFactory(beanFactory);
4)、 BeanPostProcessor postProcessor.postProcessBeanFactory(beanFactory);
***6、registerBeanPostProcessors(beanFactory); beanPostProcessor(Bean )【Register bean processors that intercept bean creation bean 】***
BeanpostProcessor Bean
BeanPostProcessor、
DestructionAwareBeanPostProcessor、
InstantiationAwareBeanPostProcessor、
SmartInstantiationAwareBeanPostProcessor、
MergedBeanDefinitionPostProcessor【internalPostProcessors】
1)、 BeanPostProcessor PriorityOrdered、Ordered
2)、 PriorityOrdered BeanPostprocessor
beanPostProcessor beanFactory
beanFactory.addBeanPostProcessor(postProcessor);
3)、 Ordered
4)、 beanPostProcessor
5)、 MergedBeanDefinitionPostProcessor
6)、 【ApplicationListenerDetector】 bean bean ApplicationListener,
this.applicationContext.addApplicationListener((ApplicationListener<?>) bean);
***7、initMessageSource(); MessageSource ( , , )***
1)、 beanFactory;getBeanFactory();
2)、 id messageSource
AbstractApplicationContext messageSource ; DelegatingMessageSource messageSource
MessageSource: key ;
3)、 MessageSource , MessageSource String getMessage(String code, Object[] args, Locale locale) throws NoSuchMessageException;
beanFactory.registerSingleton();
***8、initApplicationEventMulticaster(); 【 】***
1)、 beanFactory;getBeanFactory();
2)、beanFactory applicationEventMulticaster ApplicationEventMulticaster
3)、 SimpleApplicationEventMulticaster ,
this.applicationEventMulticaster = new SimpleApplicationEventMulticaster(beanFactory);
***9、onRefresh(); ***
1)、 , ( )
10、registerListeners(); ApplicationListener
1)、 ApplicationListener
getBeanNamesForType(ApplicationListener.class, true, false);
2)、
getApplicationEventMulticaster().addApplicationListenerBean(listenerBeanName);
3)、
***11、finishBeanFactoryInitialization(beanFactory); bean;***
1)、beanFactory.preInstantiateSingletons(); bean
1)、 bean,
2)、 bean 【RootBeanDefinition】
3)、Bean , , ;
1)、 FactoryBean; FactoryBean Bean
2)、 Bean, geBean(bean);
geBean(beanName) :
1)、doGetBean(name, null, null, false);
2)、 bean, Bean ( bean )
private final Map<String, Object> singletonObjects = new ConcurrentHashMap<String, Object>(256);
3)、 , Bean ;
4)、markBeanAsCreated(beanName); Bean
5)、 Bean getMergedLocalBeanDefinition(beanName);【RootBeanDefinition】
6)、mbd.getDependsOn(); bean bean; geBean(beanName) bean
7)、 Bean ;
1)、 createBean(beanName, mbd, args);
2)、resolveBeforeInstantiation(beanName, mbdToUse); beanPostProcessor
InstantiationAwareBeanPostProcessors
postProcessBeforeInstantiation(beanClass, beanName); applyBeanPostProcessorsAfterInitialization(bean, beanName);
3)、 InstantiationAwareBeanPostProcessors
4)、Object beanInstance = doCreateBean(beanName, mbdToUse, args); bean
1)、 bean createBeanInstance(beanName, mbd, args);
Bean
2)、applyMergedBeanDefinitionPostProcessors(mbd, beanType, beanName);
MergedBeanDefinitionPostProcessor
postProcessMergedBeanDefinition(mbd, beanType, beanName);
3)、populateBean(beanName, mbd, instanceWrapper); bean
:
1)、 beanPostProcessor InstantiationAwareBeanPostProcessor
postProcessAfterInstantiation(bw.getWrappedInstance(), beanName)
2)、 beanPostProcessor InstantiationAwareBeanPostProcessor
postProcessPropertyValues(pvs, filteredPds, bw.getWrappedInstance(), beanName);
========== ============
3)、applyPropertyValues(beanName, mbd, bw, pvs); bean 【 set 】
4)、 initializeBean(beanName, exposedObject, mbd);bean
1)、【 Aware 】invokeAwareMethods(beanName, bean); aware
BeanNameAware、BeanClassLoaderAware、BeanFactoryAware
2)、【 】applyBeanPostProcessorsBeforeInitialization(wrappedBean, beanName);
BeanPostProcessor.postProcessBeforeInitialization();
3)、【 】invokeInitMethods(beanName, wrappedBean, mbd);
1)、 InitializingBean
2)、 @Bean(init=“”)
4)、【 】applyBeanPostProcessorsAfterInitialization(wrappedBean, beanName);
beanProcessor.postProcessAfterInitialization(result, beanName);
5)、【 bean 】registerDisposableBeanIfNecessary(beanName, bean, mbd);
5)、 Bean singletonObjects【 】
ioc map, Bean、 、
bean getBean();
Bean SmartInitializingSingleton : afterSingletonsInstantiated
***12、finishRefresh(); BeanFactory ;ioc ***
1)initLifecycleProcessor(); ;LifecycleProcessor
LifecycleProcessor , beanFactory
; DefaultLifecycleProcessor
void onRefresh();
void onClose();
2)、 getLifecycleProcessor().onRefresh();
3)、publishEvent(new ContextRefreshedEvent(this));
4)、LiveBeansView.registerApplicationContext(this);
##
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
반사를 통해 객체 작성반사를 통해 객체를 작성하는 두 가지 방법 1. Class 바이트 객체 newInstance()를 통과합니다.(기본적으로 참조 없음으로 생성됨) 2. 구조기 getConstructor(Class>.parameterT...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.