spring
2023-02-17 22:00:11 1 举报
AI智能生成
spring流程图
作者其他创作
大纲/内容
public GenericApplicationContext() { this.beanFactory = new DefaultListableBeanFactory(); }调用父类的构造函数生成一个BeanFactory
prepareBeanFactory(beanFactory);添加三个BeanPossProceesor
设置BeanDefinition属性,是否懒加载,是否单例
检查BeanName是否存在,不存在进行注册
doScan()
invokeBeanFactoryPostProcessors(beanFactory);执行后置处理->进行扫描
// 获取合并后的BeanDefinition RootBeanDefinition bd = getMergedLocalBeanDefinition(beanName);
1.实例化前,如果有实例化对象就直接进行初始化后,跳过中间
推断构造方法1.有空参用空参2.无空参有带参数的3.有多个参数的就报错
2.创建Bean实例
3.后置处理合并的BeanDefinition实现MergedBeanDefinitionPostProcessor的
4.将Bean放入三级缓存中
5.实例化后
寻找注入点遍历targetClass中的所有Field1.如果是static的不注入2.如果是String的不注入
6.属性注入,如果设置了BeanDefinition属性将覆盖属性注入
7.初始化前
8.初始化
1.判断是否为AOP的基础类,是就不用进行AOP
1.如果代理类是接口或者已经经过JDK代理生成的代理类,只能JDK代理2.其他Cglib
2.创建动态代理createAopProxy()
//递归调用Process 执行业务逻辑
3.生成代理对象getProxy(classLoader)
1.从单例池进行获取,有就返回,没有就继续2.将Bean标识为创建中3.获取合并的BeanDefinition4.判断是否抽象5.判断是否有依赖@DependsOn注解,有就先加载里面的内容, 如果互相DependsOn就报错6.进行创建createBean()
getBean()
finishBeanFactoryInitialization(beanFactory);实例化所有单例Bean
refresh()
spring
0 条评论
回复 删除
下一页