Spring
文章平均质量分 71
赵银龙
这个作者很懒,什么都没留下…
展开
-
Spring之加载bean定义流程源码解析
在本文中,先对Spring加载和创建bean实例的流程跟着源代码走一遍,在后续的文章中再对所涉及的类的其他方法具体介绍。 //这一步是加载指定的配置文件 Resource resource = new ClassPathResource("bean.xml"); //DefaultListableBeanFactory是BeanFactory的子类中最常用的一个类,实例化它作为我们IO...原创 2018-09-23 13:18:06 · 1078 阅读 · 0 评论 -
Spring之执行事务流程
上一篇文章我们已经对配置文件进行了解析,对bean的实例化过程也和之前的差不多,就不再分析了,我们这次主要的任务就是看一下事务是怎么在Spring中执行的:userService.save();userService.update();这两行代码是展开本文的入口:public Object invoke(Object proxy, Method method, Object[] args...原创 2018-09-26 18:57:40 · 776 阅读 · 0 评论 -
Spring之ApplicationContext加载含有事务标签的配置文件的流程
在之前的文章中我们详细的介绍了关于AOP的加载,实例化以及执行的流程,在接下来这几篇文章中,我们将讲解利用AOP实现的事务的这一系列流程。在本文中,我们先来看一下配置文件的解析过程,下面是我们这个专题的类、配置文件以及main方法:ApplicationContext beanFactory = new ClassPathXmlApplicationContext("beans.xml");...原创 2018-09-25 22:21:02 · 608 阅读 · 0 评论 -
Spring之执行AOP代理类方法的流程
在前面三篇博客中,我们已经详细的讲解了有关AOP的配置文件的解析、bean的实例化,在本篇博客中我们将看到AOP是如何执行的Dao userDao = (Dao) beanFactory.getBean("userDao");userDao.save();这是本篇展开的两行代码,userDao在创建的时候已经被替代成代理类了,在执行save方法的时候会被拦截被我们的AOP处理,先看一下获取...原创 2018-09-25 17:45:43 · 663 阅读 · 0 评论 -
Spring之实例化AOP标签的所有剩余的(非延迟-init)单例。
上一节中我们走了一遍有关bean的后置处理器的创建流程,大体上和以往创建bean的过程还是差不多的,接下来,我们就看一下剩下的单例是如何被加载的,这里还涉及了AOP的实例化。finishBeanFactoryInitialization(beanFactory);这行代码是我们本文的的入口函数:protected void finishBeanFactoryInitialization(C...原创 2018-09-25 13:08:15 · 221 阅读 · 0 评论 -
Spring之实例化AOP标签的后置处理器流程
在上一篇文章中我们讲述了Spring是如何解析aop标签的,关键点是解析器把<aop:config/>的定义和他的子元素的定义通过parseContext利用栈把他们绑定到了一起。在这篇文章中我们就要看一下有关aop的后置处理器如何被实例化的,再来看一下配置文件的内容:ConfigurableListableBeanFactory beanFactory = obtainFresh...原创 2018-09-24 14:01:01 · 1535 阅读 · 0 评论 -
Spring之ApplicationContext加载含有AOP标签的配置文件的流程
一开始想用DefaultListableBeanFactory 跟踪AOP的源代码,发现它不支持AOP,是不支持还是自己配置错了还没搞清楚,抽空要比较一下BeanFactory下的子类的区别。ApplicationContext和我们之前的解析配置文件和创建bean的有点区别,之前都是采用的延时创建bean,就是当getBean()的时候,才会去实例化指定的bean,而ApplicationCo...原创 2018-09-24 11:02:37 · 1711 阅读 · 0 评论 -
Spring之BeanDefinitionParserDelegate源码解读
BeanDefinitionParserDelegate从字面意思上来看就是一个委托类,用来辅助解析bean的,这也确实是他的作用:下面我们就看一下这个类里面到底有什么东西public static final String TRUE_VALUE = "true"; public static final String FALSE_VALUE = "false"; public st...原创 2018-09-23 19:21:58 · 2126 阅读 · 0 评论 -
Spring之循环依赖注入
在之前的博客中我们已经多次提到了循环引用,但是都没有细讲,就是希望可以单独拿出来看一下。下面就开始吧!首先创建了循环引用的三个类,他们的引用关系如下图:在客户端调用效果如下图:开始啃源码吧!之前讲过的代码我们就不贴,只放我们之前没讲的代码:...原创 2018-09-23 18:54:39 · 4685 阅读 · 0 评论 -
Spring之bean实例的创建
在上一篇博客中,我们已经对bean的加载跟着源代码完整的走了一遍,代码读起来很轻松,主要还是Spring的编程风格,它把每段代码分割成一个一个的小逻辑,使得每个逻辑处理起来都不是很负责,非常有利于我们学习。接下来,我们继续对bean实例的创建进行阅读。Spring启动之后,如果我们不主动从里面获取bean的实例,Spring是不会主动创建实例的,所以实例的创建流程是从下面这段代码开始的Pers...原创 2018-09-23 15:21:16 · 472 阅读 · 0 评论 -
Spring之BeanFactory和FactoryBean
BeanFactoryBeanFactory是访问Spring bean容器的根接口,负责Spring中bean的创建、管理、实例化、定位、建立依赖,其他用于特定场景的bean容器接口都是直接或者间接的继承该接口。BeanFactory中持有配置文件中所有的bean的实例,每个实例是用一个字符串名称标识,如果是单例,则在第一次创建该实例就会被缓存到一个Map中,以后用到直接在该Map中获取,...原创 2018-09-23 00:23:27 · 137 阅读 · 0 评论