springboot核心流程
2021-04-23 15:05:18 64 举报
SpringBoot核心流程主要包括以下几个步骤: 1. 加载配置类,初始化Spring容器。 2. 扫描并加载需要的组件,如Service,Controller等。 3. 根据条件注解,将组件注入到Spring容器中。 4. 启动Spring容器,开始处理请求。 5. 根据请求路径,调用对应的处理方法。 6. 处理完请求后,返回响应结果。 7. 关闭Spring容器,释放资源。
作者其他创作
大纲/内容
beanFactory.preInstantiateSingletons
自定义扩展点
BeanDefinitionMap
初始化web容器
可注册bean定义
postProcessBeforeInitialization
findCandidateAdvisors
findAdvisorsThatCanApply
模板方法模式选择容器
可操作beanFactory
DispatcherServlet.initStrategies()
将对象包装成beanWrapper
注册BPP
tomcat
invokeBeanFactoryPostProcessors
springboot的自动装配
缓存bean定义
false
bean的三级缓存
一级缓存 singletonObject
将自己的objectFactory装填入三级缓存
AOP
initMultipartResolver(context);\t\tinitLocaleResolver(context);\t\tinitThemeResolver(context);\t\tinitHandlerMappings(context);\t\tinitHandlerAdapters(context);\t\tinitHandlerExceptionResolvers(context);\t\tinitRequestToViewNameTranslator(context);\t\tinitViewResolvers(context);\t\tinitFlashMapManager(context);
获取所有资源
getSingleton
getEarlyBeanReference
START
从缓存中拿取bean定义 开始初始化bean
MVC
END
初始化九大组件
注册bean定义
undertow
registerListeners
scanner.scan
IOC/DI
属性装填 依赖注入 (DI)
initializeBean
createProxy
registerBeanDefinition
add(Advisor)
registerBeanPostProcessors
loader.load
二级缓存 earlySingletonObject
1
如果二三级都没有数据,而一级缓存有数据,则调用objectFactory.getObject获取新的实例空对象,而这个对象有可能是被AOP代理的实例空对象
publishEvent
jetty
scope的配置
createBean
获取切面的切点
三级缓存解决了循环依赖 + AOP的问题
返回对象
getBean
......
注册ioc事件监听器
getPointcut
onRefresh
doGetBean
三级缓存 objectFactory
getAllSources
postProcessBeanDefinitionRegistry
handlerMapping缓存
2
执行bean工厂BPP的两个方法
初始化前置方法调用
prepareContext
postProcessAfterInstantiation
初始化后置方法调用
true
matches
doCreateBean
扫描资源
加载资源
获取所有切面
从一级缓存获取bean实例 如果不存在 则升级获取 ,如果仍然不存在, 则创建bean
自定义容器
HttpServletBean.init()
MVC实现了Servlet
handlerAdpater缓存
populateBean
0 条评论
回复 删除
下一页