Spring事务属于AOP范畴,它的底层也是需要数据库的支持,初始化时会看目标类有没有实现InvocationHandler接口或者是Proxy类,如果实现了通过反射来接收被代理的类,如果没实现就利用cglib进行AOP动态代理,CGLIB是通过继承的方式做的动态代理,是一个代码生成的类库,可以在运行时动态的生成某个类的子类,将目标对象转变为代理对象对事务进行操作,通过代理对象对数据库的操作来进行事务处理,没有异常就进行事务提交,有异常就进行事务回滚。


【Spring的事务与AOP实现原理】_开发语言