在Spring的配置文件中,如果数据源的defaultAutoCommit设置为True了,那么方法中如果自己捕获了异常,事务是不会回滚的,如果没有自己捕获异常则事务会回滚,如下例
比如配置文件里有这么条记录:
<bean id="dataSource" class="xxx">
<property name="xxx" value="xxx"/>
<property name="xxx" value="xxx"/>
....
<property name="defaultAutoCommit" value="true" />
</bean>
例子如下:
@Transactional(rollbackFor = { Exception.class })
public void test() {
try {
} catch (Exception e) {
e.printStackTrace();
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); //就是这一句
}
}