Spring知识汇总
2021-04-18 14:30:05 5 举报
AI智能生成
Spring相关的拓展点以及生命周期的概括图
作者其他创作
大纲/内容
Bean的生命周期
实例化
BeanPostProcess<br>
postProcessBeforeInitialization
属性注入<br>
判断是否有Spring拓展方法
BeanNameAware
BeanFactoryAware
ApplicationContextAware
Spring的执行处理器[InstantiationAwareBeanPostProcessor]
postProcessPropertyValues<br>
初始化
InitializingBean<br>
afterPropertiesSet()
BeanPostProcessor
10. postProcessAfterInitialization(Object bean, String beanName)
服务
销毁
DisposableBean
destroy
容器关闭后,销毁的方法
IOC启动流程
定位<br>
读取配置
xml中的<bean>
ComponentScan扫描的位置<br>
加载
将定位到的所有bean构建成BeanDefinition对象,方便容器识别处理
注册
将加载的BeanDefinition对象加入到容器进行管理<br>
内置Bean
监听器
实例化<br>
注入
初始化
SpringBoot
如何自带容器?
ServletWebServerFactory<br>
TomcatServletWebServerFactory<br>
UndertowServletWebServerFactory
JettyServletWebServerFactory
Spring的内置对象暴露
BeanNameAware<br>
setBeanName
BeanFactoryAware
setBeanFactory(BeanFactory beanFactory)
ApplicationContextAware
setApplicationContext(ApplicationContext applicationContext)
BeanFactoryPostProcessor<br>
postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory)
实例化
InstantiationAwareBeanPostProcessor<br>
postProcessBeforeInstantiation(Class<?>; beanClass, String beanName)
得到bean的class阶段
postProcessAfterInstantiation(Object bean, String beanName)
实例化阶段
postProcessPropertyValues(PropertyValues pvs, PropertyDescriptor[] pds, Object bean, String beanName)
属性注入阶段
BeanPostProcessor<br>
postProcessBeforeInitialization(Object bean, String beanName)
实例化完成阶段
InitializingBean
afterPropertiesSet()
调用初始化方法
BeanPostProcessor<br>
10. postProcessAfterInitialization(Object bean, String beanName)
实例化初始化完成阶段,这个阶段基本上已经完成代理了
DisposableBean
destroy
容器关闭后,销毁的方法
Spring的各个阶段
BeanDefinition阶段
描述
这个阶段是从配置文件(xml、注解等)将类的属性构建成BeanDefinition对象。
容器
BeanDefinitionRegistry
执行器
BeanDefinitionRegistryPostProcessor
案例
Mybatis
1. MapperScannerConfigurer
一般是用于处理自定义的BeanDefinition对象,并将它注册到工厂当中去
2. Bean工厂阶段
描述
这个是整个容器的工厂对象,该对象不仅存放着BeanDefinition,也有Bean对象存放地方。
容器
ConfigurableListableBeanFactory
执行器
BeanFactoryPostProcessor
这个阶段是在BeanDefinition已经被全部加载完成了,如果你需要改变某个写BeanDefintion的属性或者工厂的一些全局属性,可以通过实现该接口去实现.
案例
CustomScopeConfigurer
CacheManagerValidatorPostProcessor
Bean阶段
描述
这个阶段是将BeanDefinition实例化成Bean的阶段。
执行器
BeanPostProcessor
postProcessBeforeInitialization
init方法执行之前,可以为该对象设置一些特定的值
案例
1. ApplicationContextAwareProcessor
如果该bean实现了Aware接口,那么会为他设置一些类似于ApplicationContextAware的值
postProcessAfterInitialization
init方法执行之后,所有属性都已经被填充完整,基本上相当于已经new完了,set完了。
案例
动态代理
AbstractAutoProxyCreator
SpringMVC
核心的主入口
org.springframework.web.servlet.DispatcherServlet<br>
核心的启动流程入口
org.springframework.web.servlet.DispatcherServlet#initStrategies<br>
org.springframework.boot.autoconfigure.web.servlet.DispatcherServletRegistrationBean<br>
启动流程
构建文件上传的解析器<br>
构建多语言解析器<br>
构建主题样式解析器
初始化Mapper与handler的映射<br>
初始化Handler的选择适配<br>
初始化Handler的异常解析器<br>
初始化Handler的视图与名称解析器<br>
初始化视图解析器<br>
0 条评论
下一页
为你推荐
查看更多