Spring中@Transactionl注解是如何管理事务的?
1.首先Spring使用的是AOP来管理实务,实现原理是动态代理
2.事物本身是MySql的,Spring只是通过JDBC的Api去操作Mysql的事务命令,提交,回滚等。 Spring只是制定了事务的API,实现还是JDBC
3.通常我们的Service需要打@Transactionl注解 ,Spring扫描这些标签,就知道哪些类,方法需要事物
4.使用Aop的思想,基于动态代理的原理来为这些Service生成代理类
5.代理类就对原生的service做了一些增强
比如 : 在代理类方法面第一行代码 使用 Connection连接对象开启事物(设置成手动提交) ,执行原生service的方法 , 执行完之后,提交事物 ,如果异常了执行回滚
6.其实事物管理器就是告诉代理类,如何去增强,怎么取提交事物,回滚事务