Spring源码深度解析
2019-12-11 11:19:57 10 举报
AI智能生成
Spring源码深度解析
作者其他创作
大纲/内容
GenericApplicationContext
new DefaultListableBeanFactory()
AnnotationConfigApplicationContext<br>
new AnnotatedBeanDefinitionReader
this
registerAnnotationConfigProcessors
unwrapDefaultListableBeanFactory
ContextAnnotationAutowireCandidateResolver<br>
registry.containsBeanDefinition
registerPostProcessor
setRole
registerBeanDefinition
validate()
prepareMethodOverrides
ConfigurationClassPostProcessor.class<br>
beanDefinitionMap.get
BeanDefinitionHolder
new ClassPathBeanDefinitionScanner<br>
this(registry, true)<br>
this(registry, useDefaultFilters, getOrCreateEnvironment(registry))
registerDefaultFilters
register()
registerBean
doRegisterBean
AnnotatedGenericBeanDefinition
shouldSkip
processCommonDefinitionAnnotations
applyScopedProxyMode
registerBeanDefinition
refresh()
prepareRefresh()<br>
initPropertySources()
validateRequiredProperties()<br>
obtainFreshBeanFactory()
refreshBeanFactory()
compareAndSet
prepareBeanFactory()
setBeanClassLoader
setBeanExpressionResolver
addBeanPostProcessor
ignoreDependencyInterface
registerResolvableDependency
registerSingleton
postProcessBeanFactory()
invokeBeanFactoryPostProcessors()<br>
invokeBeanFactoryPostProcessors
BeanDefinitionRegistry
regularPostProcessors
currentRegistryProcessors
implement PriorityOrdered
currentRegistryProcessors.add(beanFactory.getBean)
sortPostProcessors
Ordered
invokeBeanDefinitionRegistryPostProcessors
postProcessBeanDefinitionRegistry
System.identityHashCode
processConfigBeanDefinitions<br>
getBeanDefinitionNames
configCandidates
new ConfigurationClassParser<br>
candidates
alreadyParsed
parser.parse
parse
getBeanDefinition()
instanceof AnnotatedBeanDefinition
parse
processConfigurationClass
doProcessConfigurationClass
isAnnotated
attributesForRepeatable
attributesForRepeatable
getAnnotationAttributes<br>
!componentScans.isEmpty()
parse
ClassPathBeanDefinitionScanner
scopedProxyMode
ScopeMetadataResolver
setResourcePattern<br>
typeFilter
lazyInit<br>
addExcludeFilter
doScan
basePackages
findCandidateComponents
scanCandidateComponents
packageSearchPath<br>
getResourcePatternResolver().getResources
Resource resource : resources<br>
resource.isReadable()
getMetadataReader
new ScannedGenericBeanDefinition(metadataReader)
return <beandefinition></beandefinition>candidates<beandefinition></beandefinition>
processImports
retrieveBeanMethodMetadata<br>
processInterfaces
validate
loadBeanDefinitions
loadBeanDefinitionsForConfigurationClass
loadBeanDefinitionsFromImportedResources
loadBeanDefinitionsFromRegistrars
registerBeanDefinitions
registerSingleton
beandefinitionregistrypostprocessor
invokeBeanFactoryPostProcessors
invokeBeanFactoryPostProcessors
invokeBeanFactoryPostProcessors
nonOrderedPostProcessors.add(beanFactory.getBean(postProcessorName, BeanFactoryPostProcessor.class))
invokeBeanFactoryPostProcessors<br>
registerBeanPostProcessors()<br>
registerBeanPostProcessors
getBeanNamesForType
BeanPostProcessorChecker
registerBeanPostProcessors
beanFactory.getBean
registerBeanPostProcessors
beanFactory.getBean
registerBeanPostProcessors
addBeanPostProcessor
initMessageSource()<br>
initApplicationEventMulticaster()<br>
onRefresh()
registerListeners()<br>
finishBeanFactoryInitialization()
preInstantiateSingletons<br>
getBean
doGetBean
transformedBeanName
getSingleton
getObjectForBeanInstance
getParentBeanFactory()<br>
getDependsOn()
mbd.isSingleton()
beforeSingletonCreation
singletonFactory.getObject()
createBean
resolveBeforeInstantiation
doCreateBean
createBeanInstance
determineConstructorsFromBeanPostProcessors
applyMergedBeanDefinitionPostProcessors
addSingletonFactory
populateBean
ibp.postProcessAfterInstantiation<br>
mbd.getResolvedAutowireMode()
ibp.postProcessProperties
findAutowiringMetadata
inject
elementsToIterate
(Field) this.member
inject
resolveDependency
doResolveDependency
getDependencyType()
findAutowireCandidates
resolveCandidate
field.set()
applyPropertyValues();
initializeBean
invokeAwareMethods<br>
applyBeanPostProcessorsBeforeInitialization
invokeInitMethods
applyBeanPostProcessorsAfterInitialization
getSingleton
registerDisposableBeanIfNecessary
afterSingletonCreation
addSingleton<br>
getObjectForBeanInstance
finishRefresh()
clearResourceCaches
initLifecycleProcessor
getLifecycleProcessor().onRefresh()
publishEvent
registerApplicationContext<br>
destroyBeans()
getBeanFactory().destroySingletons();
destroySingleton
removeSingleton
disposableBeans.remove(beanName);
destroyBean
clearSingletonCache
cancelRefresh<br>
resetCommonCaches
ReflectionUtils.clearCache()
AnnotationUtils.clearCache()
ResolvableType.clearCache()
cache.clear()
SerializableTypeWrapper.cache.clear()
CachedIntrospectionResults.clearClassLoader(getClassLoader())
AutowiredAnnotationBeanPostProcessor
determineCandidateConstructors
findAutowiringMetadata
findAutowiredAnnotation
CommonAnnotationBeanPostProcessor<br>
postProcessMergedBeanDefinition
resetBeanDefinition
postProcessAfterInstantiation
postProcessProperties
postProcessBeforeInstantiation
ConfigurationClassPostProcessor
ApplicationContextAwareProcessor
BeanPostProcessor
InstantiationAwareBeanPostProcessor
SmartInstantiationAwareBeanPostProcessor
InstantiationAwareBeanPostProcessorAdapter
AutowiredAnnotationBeanPostProcessor
ImportAwareBeanPostProcessor
PersistenceAnnotationBeanPostProcessor
CommonAnnotationBeanPostProcessor
MergedBeanDefinitionPostProcessor
InitDestroyAnnotationBeanPostProcessor
CommonAnnotationBeanPostProcessor
PersistenceAnnotationBeanPostProcessor
DestructionAwareBeanPostProcessor
0 条评论
下一页