spring流程图(未完)
2021-11-07 21:51:15 1 举报
登录查看完整内容
spring流程图(未完)
作者其他创作
大纲/内容
cotainer 存储bean对象
BeanFactory:spring ioc的根容器
Bean定义信息
getBean
实例化
完整对象
容器自身对象
<bean id=\"user\" class=\"User\"><!--通过constructor这个节点来指定构造函数的参数类型、名称、第⼏个--><constructor-arg index=\"0\" name=\"id\" type=\"java.lang.String\"value=\"1\"></constructor-arg> <constructor-arg index=\"1\" name=\"username\" type=\"java.lang.String\"value=\"zhongfucheng\"></constructor-arg></bean>
拓展性
如果一个对象需要生成代理对象,那么是否会进行反射的普通创建?也就是说刚刚的实例化操作会不会做?一定会创建一个实例化对象所以叫扩展
初始化
完成对beanFactory相关信息的修改或者扩展
PostProcessor
抽象接口约束
如果想在不同的阶段做不同的处理工作,怎么办观察者模式(监听器,监听事件,广播器)
用户bean对象
cglib
new反射(中间有一系列的复杂流程)
before
BeanDefinitionReader
after
BeanDefinition(bean对象定义信息)
xml
bean
在堆中开辟一块内存空间,属性默认值
填充属性
properties....
执行aware接口的方法
aware接口是为了使某些自定义方法方便的获取到容器对象例如实现applicationContextAware会自动注入得到applicationConetxt的方法
看源码技巧:1.先梳理脉络,再去抠细节2.不要忽略源码中的注释,去读去看注释3.见名知意(源码中的方法名称很规范)4、大胆猜测,小心验证5.合理使用小工具(translate,seque)
springcloud
spring
增强Beanaop
init-method
例如配置文件当中的的占位符就是通过PlaceholderConfigurerSupport完成解析替换的
n多个beanFactoryPostProcessor
销毁流程
注解
增强器(后置处理器)
BeanPostProcessor
bean的生命周期
1.创建beanFactory容器2.加载配置文件,解析bean定义信息,包装成beanDefinition3.执行BeanFactoryPostProcessor准备工作:准备BeanPostProcessor,广播器,监听器4.实例化操作5.初始化操作6.获取对象---------------------------ApplicationContext.refresh()
动态代理
springmvc
BeanFactoryPostProcessor
jdk
populateBean
当获取到beanName之后会直接创建吗?先从容器中获取,如果获取不到再创建
反射:Class clazz=class.forName()Class clazz=类名.classClass clazz=对象名.getClass()Constructure ctor=clazz.getDeclaredConstrustructor()Object obj=ctor.newStance()
创建对象
springboot
完成对bean相关信息的修改或者扩展
收藏
0 条评论
回复 删除
下一页