![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Spring源码
LL44224362
这个作者很懒,什么都没留下…
展开
-
RequestMapping的加载过程
注册过程的具体实现主要在RequestMappingHandlerMapping类中, 该类实现了InilizationBean接口中的afterPropertiesSet()接口, 调用其父类的该方法实现中完成加载.@RequestMapping可以声明类和方法对应的URL路径, 这些对应关系被注册在HandlerMapping中, 本文通过源码分析注册过程。processCandidateBean()中对候选进行筛选, 并检测其所有方法。最终被注册到一个map中, key->value如下。原创 2023-07-06 12:01:47 · 81 阅读 · 1 评论 -
Spring事务的底层原理
事务的同步状态通过接口TransactionSynchronization 进行管理抽象类TransactionSynchronizationManager 负责管理事务与线程的绑定关系事务的执行流程事务的挂起AbstractPlatformTransactionManager.suspend(),大致做了以下几件事事务的恢复 AbstractPlatformTransactionManager.resume(),大致做了以下几件事。原创 2023-06-17 20:33:53 · 69 阅读 · 1 评论 -
Spring之AOP的底层原理
本文通过阅读Spring的源码,学习AOP的底层实现原创 2023-06-16 20:11:45 · 39 阅读 · 1 评论 -
Spring的循环引用
此时如果产生循环依赖,会再次进入缓存查找过程,此时会找到缓存的A的工厂,根据工厂生产未完成的A,加入二级缓存,删除三级缓存中的A工厂,并返回未完成的A。Spring中包含三级缓存,这三级缓存在DefaultSingletonBeanRegistry中,是三个以BeanName为key的map。循环引用即A-B-A引用问题,关键在于如何解决创建A需要B,创建B需要A的问题,Spring中采用暴露未完成的Bean的方法实现循环引用。tips:该方法并不能解决所有的循环引用问题,如构造器内的循环应用就无法解决。原创 2023-06-16 15:31:42 · 93 阅读 · 1 评论 -
通过@ComponetScan注解加载Bean
在parse方法中扫描获取BeanDefinition,该方法中首先定义了一个scanner,然后获取@ComponetScan注解的相关属性,为Scanner进行配置,包括useDefaultFilters、basePackages、includeFilters和excludeFilters等,最后调用scanner.doScan()方法。Scanner的doScan方法,获取BeanDefinition,并将其与beanname和别名组装成BeanDefinitionHolder返回。原创 2023-06-14 15:35:46 · 190 阅读 · 0 评论