Spring声明式事务的两种配置方式(注解/xml)

时间:2020-09-12 12:55:49   收藏:0   阅读:45

application配置tx:annotation-driven
配置声明式事务tx:TransactionManager
声明式事务需要数据源所以需要配置DataSource
使用:在类或者方法上添加@Transactional

基于xml式声明式事务

配置切入点表达式aop:pointcut
关联切入点表达式aop:advisor pointcut-ref ,advic
配置事务通知tx:advice,需要关联事务管理器 DataSourceTransactionManager,需要关联数据源
配置数据源DataSource

<!--1.组件扫描-->
<context:component-scan base-package="com.ybbit">
    <!--排除controller扫描-->
    <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>

<!--2.加载配置文件-->
<context:property-placeholder location="classpath:jdbc.properties"/>

<!--3.配置数据源信息-->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
    <property name="driverClassName" value="${jdbc.driver}"/>
    <property name="url" value="${jdbc.url}"/>
    <property name="username" value="${jdbc.username}"/>
    <property name="password" value="${jdbc.password}"/>
</bean>

<!--4.配置SQLSessionFactory工厂-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <!--指定mybatis全局配置文件-->
    <property name="configLocation" value="classpath:mybatis-config.xml"/>
    <!--指定数据源-->
    <property name="dataSource" ref="dataSource"/>
    <!--指定mapper文件的位置-->
    <property name="mapperLocations" value="classpath:mapper/*Mapper.xml"/>
</bean>

<!--5.配置AccountDao接口所在的包-->
<bean id="mapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <property name="basePackage" value="com.ybbit.dao"/>
</bean>

<!--配置可以执行批量的sqlSession-->
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
    <constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory"/>
    <constructor-arg name="executorType" value="BATCH"/>
</bean>

<!--6.配置spring声明式事务管理-->
<!--事务管理器-->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource"/>
</bean>

<!--7.配置事务通知-->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
    <tx:attributes>
        <tx:method name="find*" read-only="true"/>
        <tx:method name="*" isolation="DEFAULT"/>
    </tx:attributes>
</tx:advice>

<!--8.配置AOP增强-->
<aop:config>
    <aop:pointcut id="pt1" expression="execution(* com.ybbit.*.*(..))"/>
    <aop:advisor advice-ref="txAdvice" pointcut-ref="pt1"/>
</aop:config>

原文:https://www.cnblogs.com/ybbit/p/13656490.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!