随笔分类 -  Spring原理

摘要:摘要: 本文首先将举例说明如何使用BeanWrapper,然后根据例子中的结果分析BeanWrapper的源码。由于在spring中BeanWrapperImpl是BeanWrapper接口的唯一实现类,所以将对BeanWrapperImpl进行源码分析。最后,将从三个方面分析BeanWrapper 阅读全文
posted @ 2017-10-18 23:25 coshaho 阅读(376) 评论(0) 推荐(0)
摘要:这一讲主要分析bean注册过程中各种初始化方法回调的执行逻辑(initializeBean) 阅读全文
posted @ 2017-10-18 18:51 coshaho 阅读(260) 评论(0) 推荐(0)
摘要:这一讲分析spring bean属性注入代码populateBean,源码分析如下 debug过程中我们知道,总共有7个BeanPostProcessor 对于@Autowired,@Value注解注入的属性值,AutowiredAnnotationBeanPostProcessor会处理。我们进一 阅读全文
posted @ 2017-10-18 16:30 coshaho 阅读(899) 评论(0) 推荐(0)
摘要:这一讲我们分析真正的bean实例创建方法——doCreateBean,源码分析如下 步骤如下 1、 createBeanInstance:执行构造方法创建bean实例; 2、 populateBean:丰富bean属性,包括依赖注入的bean和一般属性; 3、 initializeBean:执行be 阅读全文
posted @ 2017-10-18 15:07 coshaho 阅读(299) 评论(0) 推荐(0)
摘要:我们知道,在spring bean生命周期中,我们可以在不同阶段执行处理器或者方法,比如init-method,destroy方法,BeanPostProcessor接口等。那么这些处理器或方法的执行顺序是怎样的,让我们用实际例子来观察。 执行结果 可以看出来,spring bean加载顺序如下 1 阅读全文
posted @ 2017-10-17 22:31 coshaho 阅读(341) 评论(0) 推荐(0)
摘要:上一讲我们谈到单例生产关键方法getSingleton。getSingleton方法由DefaultSingletonBeanRegistry类实现。我们的抽象工厂AbstractBeanFactory继承了FactoryBeanRegistrySupport,而FactoryBeanRegistr 阅读全文
posted @ 2017-10-17 16:16 coshaho 阅读(300) 评论(0) 推荐(0)
摘要:我们先看AbstractBeanFactory.getBean方法,这个方法通过bean名称类型等信息获取类实例,如果实例不存在则生产并缓存。 关键方法doGetBean解读如下 关键代码getSingleton下一讲继续研究。 阅读全文
posted @ 2017-10-17 00:08 coshaho 阅读(347) 评论(0) 推荐(0)
摘要:Spring通过配置文件或者注解对类实例进行加载管理。稍微思考,可以猜测spring加载过程肯定先把配置转化为统一的配置对象,再把通过配置对象生产类实例。阅读源码,我们也可以发现这个逻辑。 spring配置对象类结构 spring实例生产工厂类结构 spring bean生产简单例子 例子中我们简单 阅读全文
posted @ 2017-10-16 23:19 coshaho 阅读(575) 评论(0) 推荐(0)