Spring源码分析时序图
2023-08-08 15:42:43 0 举报
Spring源码分析时序图
作者其他创作
大纲/内容
beanDefinition
AfterReturningAdviceInterceptor
initStrategies()
doService()
createBean()
initWebApplicationContext()
ReflectiveMethodInvocation
processDispatchResult()
DefaultAopProxyFactory
populate
注册
XmlBeanDefinitionReader
定位
invokeHandlerMethod()
定义规范,方便扩展
对象的属性都是默认值
setPropertyValue()
返回一个getModelAndView
DefaultListableBeanFactory
Loop
ProxyFactory
AbstractNestablePropertyAccessor
BeanDefinitionParserDelegate
initializeBean()
返回拦截器链
代码织入
RequestMappingHandlerAdapter
AbstractAutoProxyCreator
在堆中开辟一块空间
AnnotationAwareOrderComparator
properties
构造方法
doGetBean()
ClassPathXmlApplicationContext
实例化
createAopProxy()
BeanDefinitionReaderUtils
从容器获取
依赖注入
getInterceptorsAndDynamicInterceptionAdvic()
AbstractPropertyAccessor
首先调用父类容器的构造方法为容器设置Bean资源加载器
AdvisedSupport
refreshBeanFactory()
createProxy()
doRegisterBeanDefinitions()
AbstractHandlerMapping
populateBean()
创建代理类
创建对象
ApplicationContext
onRefresh()
render()
loadBeanDefinitions()
Aware接口的作用?当Spring容器创建的bean对象在进行具体操作的时候,如果需要容器中的其他对象,此时可以将对象实现Aware接口,来满足当前的需求
完整对象
AbstractView
AbstractAdvisorAutoProxyCreator
AbstractRefreshableConfigApplicationContext
context.getBean()
返回HandlerExecutionChain
IOC源码分析
加载
反射
返回具体proxy
instantiate()
yml
createBeanInstance()
sort()
执行初始化方法
BeanDefinitionReader
PostProcessor
beanDefinitionMap
放到容器中
设置Bean配置信息的定位路径
后置处理器增强器
getBean()
载入Bean定义的方法,使用委派模式,当前类只定义抽象方法,具体实现在子类
子类实现父类抽象的载入Bean定义方法
AbstractBeanFactory
BeanFactoryPostProcess
after
解析xml
findEligibleAdvisors()
BeanWrapperImpl
BeanFactoryPostProcessor
AbstractApplicationContext
先判断BeanFactory是否存在,如果存在先销毁beans并关闭beanFactory,然后创建DefaultListableBeanFactory
初始化阶段
DI源码分析
JdkDynamicAopProxy
DispatcherServlet
getProxy()
MethodBeforeAdviceInterceptor
proceed()
registerBeanDefinitions()
xml
applyPropertyValues()
refresh()
wrapIfNecessary()
设置Aware接口的属性
给属性设置值
handleInternal()
SimpleInstantiationStrategy
MVC源码分析
封装BeanDefinition
调用阶段
加载xml
Spring概述
初始化
BeanPostProcessor.bofore
setValue()
AbstractAutowireCapableBeanFactory
registerBeanDefinition()
invoke()
AbstractXmlApplicationContext
processLocalProperty()
before
getAdvicesAndAdvisorsForBean()
DefaultBeanDefinitionDocumentReader
BeanPostProcessor.after
obtainFreshBeanFactory()
configureAndRefreshWebApplicationContext()
回调通知
BeanPostProcessor
增强BeanDefinition信息
SpringIOC容器对Bean配置资源的载入是从refresh()函数开始的,它是一个模板方法,规定IOC的启动流程
setConfigLocations()
BeanFactoryBean工厂,整个容器的根接口,也是容器的入口Constructor c = new getConstructor();Object o = c.newInstabce();
getModelAndView()
registerBeanDefinition()
getHandler()
applyBeanPostProcessorsAfterInitialization()
执行init-method方法
AOP源码分析
增强Bean信息
FrameworkServlet
initServletBean()
调用render()方法,通过response输出到浏览器
HttpServletBean
初始化九大组件
填充属性
AbstractHandlerMethodAdapter
getHandlerAdapter()
handle()
doDispatch()
0 条评论
下一页