事务是spring框架中一个核心的模块,事务的ACID特性想必对于学习java的同学来说都不陌生,对于spring,实现事务的底层原理其实很简单,就是通过AOP代理进行实现,而实现spring的AOP更底层的,就是使用反射机制完成的;
举例来说,当你的方法上标注了@Service之后,spring怎么知道你这个类会被纳入到整个bean的容器中进行管理呢?如果在这个类下面的某个方法上面加了@Transactionnal注解,spring怎么知道要为你的这个方法开启一个事务管理器呢?说到底,反射在这里就派上用场了,总体来说,就是通过反射,匹配类上的注解,再去匹配方法上的注解,只要找到了相应的注解,就开启相应的特性,就是这么简单,
关于spring事务,常见的有两种,一种是编程式事务,比如java代码使用Jdbc进行数据库操作而没有引入其他框架时,就需要通过手动编写事务进行处理,另一种就是我们熟知的使用spring框架,帮助我们管理事务,比如像我们在xml配置文件中,通过配置扫描包和事务管理器,就可以对相关的类进行事务管理了,下面来演示一下采用编程式事务来学习一下spring的事务特性,了解了编程式事务,xml的事务就不是难