![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
源码
文章平均质量分 96
桐花思雨
这个作者很懒,什么都没留下…
展开
-
Spring源码之FactoryBean接口的作用和实现原理
目录1.`FactoryBean` 接口简述2.`FactoryBean` 在 `Spring` 中的应用1.FactoryBean 接口简述BeanFactory 与 FactoryBean 接口,相信很多刚翻看 Spring 源码跟我一样很好奇这俩货怎么长得这么像,分别都是干啥用的。BeanFactory 是 Spring 中 Bean 工厂的顶层接口,也是我们常说的 Spring IOC 容器,它定下了 IOC 容器的一些规范和常用方法并管理着 Spring 中所有的 Bean,今天我们不讲它,我原创 2022-03-07 00:18:35 · 813 阅读 · 0 评论 -
Spring源码之bean的销毁registerDisposableBeanIfNecessary方法解读
目录前言`registerDisposableBeanIfNecessary()` 方法概览前言这篇文章是 IOC 容器初始化启动时,抽象类 AbstractAutowireCapableBeanFactory 的 doCreateBean() 方法里面的 registerDisposableBeanIfNecessary() 方法,它是进行 bean 的销毁的方法阅读本篇文章,同时可以参考阅读 spring源码之getBean(获取 bean)方法解读(二) 和 spring aop代理对象的产生原创 2021-05-08 22:48:27 · 895 阅读 · 2 评论 -
Spring源码之bean的初始化initializeBean方法解读
目录前言前言这篇文章是 IOC 容器初始化启动时,抽象类 AbstractAutowireCapableBeanFactory 的 doCreateBean() 方法里面的 initializeBean() 方法,它是进行 bean 的初始化的方法阅读本篇文章,同时可以参考阅读 spring源码之getBean(获取 bean)方法解读(二) 和 spring aop代理对象的产生(一) 这两篇文章的 doCreateBean() 方法...原创 2021-05-06 11:12:48 · 3481 阅读 · 0 评论 -
Spring源码之bean的属性填充populateBean方法解读
目录前言前言这篇文章是 IOC 容器初始化启动时,抽象类 AbstractAutowireCapableBeanFactory 的 doCreateBean() 方法里面的 populateBean() 方法,它进行 bean 的属性填充注入的方法阅读本篇文章,同时可以参考阅读 spring源码之getBean(获取 bean)方法解读(二) 和 spring aop代理对象的产生(一) 这两篇文章的 doCreateBean() 方法...原创 2021-05-03 22:09:28 · 4908 阅读 · 1 评论 -
Spring源码之bean的实例化createBeanInstance方法解读
目录前言前言这篇文章是 IOC 容器初始化启动时,抽象类 AbstractAutowireCapableBeanFactory 的 doCreateBean() 方法里面的 createBeanInstance() 方法,顾名思义是 bean 的实例化方法。阅读本篇文章,同时可以参考阅读 spring源码之getBean(获取 bean)方法解读(二) 和 spring aop代理对象的产生(一) 这两篇文章的 doCreateBean() 方法...原创 2021-05-03 15:53:10 · 799 阅读 · 1 评论 -
Spring源码之bean的解析obtainFreshBeanFactory方法解读
目录前言前言一直以来,只是知道 spring 会解析所有的配置文件(通常我们会放在 resources 目录下),然后将从配置文件中解析到的 bean 定义封装成 BeanDefinition,加载到 IOC 容器中。而不知道其内部是如何解析,执行的,本篇文章将予以揭秘...原创 2021-05-10 16:58:46 · 1014 阅读 · 1 评论 -
Spring中的循环依赖(单例)
目录什么是 `spring` 的循环依赖2.`spring` 如何解决循环依赖3.`spring` 解决循环依赖的原理4.`spring` 为什么不能解决构造器的循环依赖5.`spring` 解决循环依赖为什么要使用三级缓存 `singletonFactories`什么是 spring 的循环依赖循环依赖就是在多个 bean 中,相互依赖对方,导致在创建的时候无法加载。如:beanA 依赖了 beanB,beanB 又依赖了 beanC,beanC 最后又依赖了 beanA,成了一个闭环。循环依赖是 b原创 2021-04-11 14:05:22 · 623 阅读 · 0 评论 -
Spring源码之getBean(获取 bean)方法(二)解读
前言接着上篇博客 spring 源码之 getBean 方法解读 ,在博客最后有个疑问:getBean 的时候总是从单例缓存池(指的是一级缓存 singletonObjects)中拿到了,那么productInfoServiceImpl 这个 bean 是在什么时候初始化的,又在什么时候添加进了单例缓存池(指的是一级缓存 singletonObjects)中呢?public class Test_2 { public static void main(String[] args) {原创 2021-03-25 16:57:09 · 3357 阅读 · 1 评论 -
Spring源码之getBean(获取 bean)方法(一)解读
目录测试类一个简单的测试类对于 `ApplicationContext` 和 `ClassPathXmlApplicationContext` 类图如下`getBean` 源码解读查看 `AbstractApplicationContext` 中的 `getBean` 方法查看 `AbstractBeanFactory` 的 `doGetBean` 方法看 `doGetBean` 方法的流程图查看 `getSingleton(beanName)` 方法(重点)疑惑问题测试类一个简单的测试类publ原创 2021-04-11 13:17:04 · 2586 阅读 · 0 评论 -
Spring之AOP代理对象的产生(二)
前言我们接着 spring aop代理对象的产生(一) 来分析 aop 代理对象的产生,上篇文章解读到了 AbstractAutowireCapableBeanFactory 的 initializeBean 方法,我们继续aop 代理对象的产生initializeBean 方法重点关注 applyBeanPostProcessorsAfterInitialization 方法AOP 的原理和实现就在其中,来到了AbstractAutowireCapableBeanFactory的applyBean原创 2021-02-01 18:21:02 · 1093 阅读 · 0 评论 -
Spring之AOP代理对象的产生(一)
准备接口public interface UserService { String query();}接口的实现@Servicepublic class UserServiceImpl implements UserService { @Override public String query() { System.out.println("------------ yz ------------"); return "yz";原创 2021-03-25 16:48:04 · 1549 阅读 · 0 评论 -
Spring源码之事务(二)
寻找事务类或方法对应的增强器跟进 getAdvicesAndAdvisorsForBean 方法spring 通过 getAdvicesAndAdvisorsForBean() 获取指定 bean 对应的增强器,不但要找出增强器,而且还需要判断增强器是否满足要求@Override@Nullableprotected Object[] getAdvicesAndAdvisorsForBean( Class<?> beanClass, String beanName, @Nul原创 2021-09-08 18:11:15 · 365 阅读 · 0 评论 -
Spring源码之事务(一)
声明式事务简单示例service 实现类@Servicepublic class ProductInfoServiceImpl implements ProductInfoService { @Autowired private ProductInfoMapper productInfoMapper; @Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.DEFAULT) @原创 2021-02-03 23:27:08 · 309 阅读 · 0 评论 -
Spring AOP源码解读
aop 是什么AOP (Aspect-Oriented Programming,面向切面编程),可以说是 OOP 的补充和完善。OOP 引入封装、继承和多态性等概念来建立一种对象层次结构,用以模拟公共行为的一个集合。当我们需要为分散的对象引入公共行为的时候,OOP 则显得无能为力。OOP 允许你定义从上到下的关系,但并不适合定义从左到右的关系。例如日志功能。日志代码往往水平地散布在所有对象层次中,而与它所散布到的对象的核心功能毫无关系。对于其他类型的代码,如安全性、异常处理和透明的持续性也是如此。这种散布原创 2021-01-23 23:23:36 · 4323 阅读 · 0 评论