抽象类 @Tranaction
时间: 2023-08-23 12:11:15 浏览: 96
abstract抽象类
抽象类 @Transaction 是指在Spring框架中用于实现事务管理的核心抽象类。它的作用是在IOC容器中注册一个AbstractAdvisorAutoProxyCreator的实现类,这个抽象类就是AOP的核心实现。所以这个Bean实际上是一个BeanPostProcessor,在Spring Bean初始化后会进行对Advisor的寻找,然后判断当前Bean是否需要进行AOP并且是否有符合的切点,然后进行AOP的操作。[1]
在Spring事务的基本执行原理中,抽象类 @Transaction 在Bean的生命周期中的初始化后阶段,通过BeanPostProcessor机制,经过InfrastructureAdvisorAutoProxyCreator的后置处理方法检查当前初始化的Bean是否存在@Transactional注解,随之生成一个代理对象。在外部调用这个代理对象的事务方法时,会命中MethodInterceptor拦截,检查当前方法是否有匹配的Advisor,有则执行对应的invoke方法,在invoke方法中定义了事务的实现原理。具体的实现包括利用配置好的PlatformTransactionManager事务管理器新建一个数据库连接,修改这个Connection的提交模式autoCommit为false,执行MethodInvocation.proceed()方法,执行结束后根据是否有异常来提交或回滚事务。[2]
总结来说,抽象类 @Transaction 在Spring框架中起到了实现事务管理的关键作用,通过AOP的方式对带有@Transactional注解的方法进行事务管理。
阅读全文