摘要:@Configuration注解提供了全新的bean创建方式。最初spring通过xml配置文件初始化bean并完成依赖注入工作。从spring3.0开始,在spring framework模块中提供了这个注解,搭配@Bean等注解,可以完全不依赖xml配置,在运行时完成bean的创建和初始化工作。 阅读全文
posted @ 2019-10-17 10:14 chen_hao 阅读 (237) 评论 (1) 编辑
摘要:上一篇文章讲解了获取事务,并且通过获取的connection设置只读、隔离级别等,这篇文章讲解剩下的事务的回滚和提交 回滚处理 之前已经完成了目标方法运行前的事务准备工作,而这些准备工作最大的目的无非是对于程序没有按照我们期待的那样进行,也就是出现特定的错误,那么,当出现错误的时候,Spring是怎 阅读全文
posted @ 2019-10-16 11:14 chen_hao 阅读 (193) 评论 (1) 编辑
摘要:上一篇文章我们讲解了事务的Advisor是如何注册进Spring容器的,也讲解了Spring是如何将有配置事务的类配置上事务的,实际上也就是用了AOP那一套,也讲解了Advisor,pointcut验证流程,至此,事务的初始化工作都已经完成了,在之后的调用过程,如果代理类的方法被调用,都会调用Bea 阅读全文
posted @ 2019-10-15 10:45 chen_hao 阅读 (225) 评论 (0) 编辑
摘要:此篇文章需要有SpringAOP基础,知道AOP底层原理可以更好的理解Spring的事务处理。 自定义标签 对于Spring中事务功能的代码分析,我们首先从配置文件开始人手,在配置文件中有这样一个配置:<tx:annotation-driven/>。可以说此处配置是事务的开关,如果没有此处配置,那么 阅读全文
posted @ 2019-10-14 11:07 chen_hao 阅读 (275) 评论 (1) 编辑
摘要:面的几个章节已经分析了spring基于@AspectJ的源码,那么接下来我们分析一下Aop的另一个重要功能,事物管理。 事务的介绍 1.数据库事物特性 原子性多个数据库操作是不可分割的,只有所有的操作都执行成功,事物才能被提交;只要有一个操作执行失败,那么所有的操作都要回滚,数据库状态必须回复到操作 阅读全文
posted @ 2019-10-12 11:01 chen_hao 阅读 (290) 评论 (3) 编辑
摘要:上一篇博文中我们讲了代理类的生成,这一篇主要讲解剩下的部分,当代理类调用时,目标方法和代理方法是如何执行的,我们还是接着上篇的ReflectiveMethodInvocation类Proceed方法来看 我们先来看一张方法调用顺序图 我们看到链中的顺序是AspectJAfterThrowingAdv 阅读全文
posted @ 2019-10-11 10:46 chen_hao 阅读 (260) 评论 (0) 编辑
摘要:在获取了所有对应bean的增强后,便可以进行代理的创建了。回到AbstractAutoProxyCreator的wrapIfNecessary方法中,如下所示: 我们上一篇文章分析完了第16行,获取到了所有对应bean的增强器,并获取到了此目标bean所有匹配的 Advisor,接下来我们要从第17 阅读全文
posted @ 2019-10-10 10:53 chen_hao 阅读 (232) 评论 (0) 编辑
摘要:在上一篇的博文中我们讲解了通过自定义配置完成了对AnnotationAwareAspectJAutoProxyCreator类型的自动注册,那么这个类到底做了什么工作来完成AOP的操作呢?首先我们看看AnnotationAwareAspectJAutoProxyCreator的层次结构,如下图所示: 阅读全文
posted @ 2019-10-09 11:08 chen_hao 阅读 (233) 评论 (3) 编辑
摘要:我们知道在面向对象OOP编程存在一些弊端,当需要为多个不具有继承关系的对象引入同一个公共行为时,例如日志,安全检测等,我们只有在每个对象里引入公共行为,这样程序中就产生了大量的重复代码,所以有了面向对象编程的补充,面向切面编程(AOP),AOP所关注的方向是横向的,不同于OOP的纵向。接下来我们就详 阅读全文
posted @ 2019-09-29 11:04 chen_hao 阅读 (206) 评论 (0) 编辑
摘要:在之前的博文中我们一直以BeanFactory接口以及它的默认实现类XmlBeanFactory为例进行分析,但是Spring中还提供了另一个接口ApplicationContext,用于扩展BeanFactory中现有的功能。 ApplicationContext和BeanFactory两者都是用 阅读全文
posted @ 2019-09-27 15:50 chen_hao 阅读 (209) 评论 (0) 编辑