美文网首页
spring 声明式事务管理

spring 声明式事务管理

作者: nerowu | 来源:发表于2018-07-18 18:35 被阅读0次

    本节阐述在事务相关的问题上,Spring框架的声明式事务管理的内部工作原理。

    关于Spring框架的声明式事务支持,最重要的概念是,这种支持是通过AOP代理实现的,并且事务建议是由元数据(当前的XML或基于注解的)驱动的。AOP与事务性元数据的结合产生了一个AOP代理,它使用transaction拦截器与适当的PlatformTransactionManager implementation一起来驱动围绕方法调用的事务。

    从概念上讲,在事务代理上调用一个方法是这样……

    以下声明式事务管理的例子。此例只为说明上图的实现过程,作为springboot时代这套配置早已过时,但它体现了spring事务的内部管理机制。

    <bean id="fooService" class="x.y.service.DefaultFooService"/>

    <!-- 构建transaction Advisor-->

    <tx:advice id="txAdvice" transaction-manager="txManager">

        <tx:attributes>

            <tx:method name="get*" read-only="true"/>

            <tx:method name="*"/>

        </tx:attributes>

    </tx>

    <aop:config>

            <aop:pointcut id="fooServiceOperation" expression="execution(* x.y.service.FooService.*(..))"/>

            <aop:advisor advice-ref="txAdvice" pointcut-ref="fooServiceOperation"/>

    </aop:config>

    <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">

            <property name="dataSource" ref="dataSource"/>

    </bean>

    上面的配置将被用来创建一个事务代理,围绕从fooService bean定义创建的对象。代理将被配置为事务通知,以便在代理上调用适当的方法时,事务被启动、挂起、标记为只读,等等,这取决于与该方法相关联的事务配置。

    相关文章

      网友评论

          本文标题:spring 声明式事务管理

          本文链接:https://www.haomeiwen.com/subject/gicopftx.html