Spring的多事務配置和使用方法有以下幾種:
示例:
@Transactional
public void doSomething() {
// 事務操作
}
示例:
@Autowired
private PlatformTransactionManager transactionManager;
public void doSomething() {
TransactionTemplate transactionTemplate = new TransactionTemplate(transactionManager);
transactionTemplate.execute(status -> {
// 事務操作
return null;
});
}
示例:
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="doSomething" propagation="REQUIRED" rollback-for="Exception" />
</tx:attributes>
</tx:advice>
<aop:config>
<aop:pointcut id="transactionPointcut" expression="execution(* com.example.service.*.*(..))" />
<aop:advisor advice-ref="txAdvice" pointcut-ref="transactionPointcut" />
</aop:config>
示例:
<context:annotation-config />
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="doSomething" propagation="REQUIRED" rollback-for="Exception" />
</tx:attributes>
</tx:advice>
<aop:config>
<aop:pointcut id="transactionPointcut" expression="execution(* com.example.service.*.*(..))" />
<aop:advisor advice-ref="txAdvice" pointcut-ref="transactionPointcut" />
</aop:config>
需要注意的是,多事務的配置和使用需要先配置事務管理器(如DataSourceTransactionManager)、事務通知器(如TransactionInterceptor)等相關組件,并確保數據庫支持事務(如使用InnoDB引擎的MySQL數據庫)。