摘要: 想要了解这两个方法,我们先得有的前置知识 我们首先创建一个事件,然后创建一个监听器去执行事件的方法 我们进行发布事件 那么就能够成功发布并且广播事件,然后被监听到进行调用了 我们看看publisEvent的源码 主要看圈中的这一段,拿到应用事件的广播器,去进行多路广播事件,那么它的事件广播器是怎么来 阅读全文
posted @ 2025-05-24 22:01 七森星罗 阅读(21) 评论(0) 推荐(0)
摘要: spring中的registerBeanPostProcessors 跟前面的invokeBeanFactoryPostProcessor结构类似,它主要做的就是往传进来的factory中add了BeanPostProcessor,但是没有执行,应该是为了之后能够使用 initMessageSour 阅读全文
posted @ 2025-05-24 21:03 七森星罗 阅读(15) 评论(0) 推荐(0)
摘要: refresh中的postProcessBeanFactory方法 点进去看看这个方法 这是一个模板方法模式,由可以由子类来实现 在看下一个方法前,我们需要做一些准备,我们要知道invokeBeanFactoryPostProcessors它是会去调用,我们在prepareBeanFactory中的 阅读全文
posted @ 2025-05-24 15:00 七森星罗 阅读(12) 评论(0) 推荐(0)
摘要: AbstractApplicationContext中的prepareBeanFactory 准备bean工厂在上下文中使用 set类加载器,将我们当前线程的类加载器设置进去 再设置了spel表达式解析器,等到后续会被evaluateBeanDefinitionString时会被调用进行解析spel 阅读全文
posted @ 2025-05-23 14:09 七森星罗 阅读(17) 评论(0) 推荐(0)
摘要: AbstractApplicationContext中的prepareBeanFactory 从注释来看是要去告诉子类刷新bean工厂,进入观察 继续往下找,找到它的实现类 什么都不做,事实也是如此,这里的CAS不会进入,直接到this.beanFactory.setSerializationId 阅读全文
posted @ 2025-05-23 10:30 七森星罗 阅读(18) 评论(0) 推荐(0)
摘要: AnnotationApplicationContext里的refresh方法 分一下模块吧,这里方法确实是有点多了 我们一个一个来看吧 首先做了启动时间的记录,然后将是否关闭和活动状态进行了修改,应该是改成了可更改状态,然后打印日志的我们不关注,直接跳过 到initPropertySource,他 阅读全文
posted @ 2025-05-22 22:10 七森星罗 阅读(26) 评论(0) 推荐(0)
摘要: 前面结束了this方法对于两个类的创建 总结来说reader的创建就是做了对环境的获取并设置,载入了核心注解和类级别注解,而Scanner的创建就是做了创建了一个当@componentScan扫描时用来识别当前类是否需要被spring管理,重点关注了component注解和他的子注解 那么以上为第一 阅读全文
posted @ 2025-05-22 17:20 七森星罗 阅读(37) 评论(0) 推荐(0)
摘要: 前面reader看完了,我们继续看ClassPathBeanDefinitionScanner他做了什么进入查看他的带AnnotationConfigApplicationContext的构造函数 那么进入到两个参数的构造函数中 两个参数的构造函数又会去调用三个参数的构造函数 三个参数的构造函数又会 阅读全文
posted @ 2025-05-21 21:28 七森星罗 阅读(20) 评论(0) 推荐(0)
摘要: spring源码的解读 我们首先编译得到spring的源代码,然后我们创建一个测试类测试创建spring容器 我们进入AnnotationConfigApplicationContext构造函数,最重要的就是这三个函数 进入到this去调用本类的无参构造并初始化父类,我们首先来看this分支他做了什 阅读全文
posted @ 2025-05-19 16:07 七森星罗 阅读(34) 评论(0) 推荐(0)