haidaoxianzi 2020-03-23
一、Spring中事务的隔离级别
<!-- 配置事务 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"></property> </bean> <!-- 定义事务的传播行为 --> <tx:advice id="txAdvice" transaction-manager="transactionManager"> <tx:attributes> <!-- 所有以update delete save开头的方法都进行事务管理 --> <tx:method name="update*" propagation="REQUIRED"/> <tx:method name="delete*"/> <tx:method name="save*"/> <!-- 查询不做事务处理 --> <tx:method name="find*" read-only="true"/> <tx:method name="get*" read-only="true"/> <tx:method name="select*" read-only="true"/> </tx:attributes> </tx:advice> <!-- 定义切面 --> <aop:config> <aop:pointcut expression="execution(* org.service.*.*(..))" id="myPointcut"/> <aop:advisor advice-ref="txAdvice" pointcut-ref="myPointcut"/> </aop:config>
2、XML+注解的方式
<!-- 事务管理器 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"></property> </bean> <!-- 使用事务注解@Transational来给具体的方法添加事务要求,缺点是不能统一处理,使用tx:advice方式来进行aop处理则可以统一处理事务 --> <tx:annotation-driven transaction-manager="transactionManager"/>
2.2 在需要事务处理的类中添加注解
@Transactional
params: readOnly,是否只读,true为只读,false为非只读;
params: propagation,设定事务的传播行为