Spring(DataSourceTransactionManager)@Transactable不会回滚

时间:2014-12-11 17:12:14

标签: java spring transactions datasource

我正在尝试配置Spring Transactions但它们似乎无法正常工作。

这是我的配置Java类,我给Datasource,JdbcTemplates和我使用的所有Daos定义

@Configuration
@PropertySource("${configuration.properties.path}")
@EnableTransactionManagement
public class BeanConfiguration  {

...different DAOs...


    @Override
    @Bean
    public DataSourceTransactionManager transactionManager(){
        return new DataSourceTransactionManager(dataSource());
    }

    @Override
    @Bean
    public MyManager myManager(){
        return new MyManager();
    }
}

这是具有可转换方法的MyManager类,可与多个DAO一起使用。

//@TransactionConfiguration(transactionManager = "transactionManager", defaultRollback = true)

@Transactional(propagation = Propagation.REQUIRED, rollbackFor=Exception.class)

public class EnoceanDeviceManager{

....autowired Daos

public void addNewDevices(Class1 class1, Class2 class2) {

        //returns with id
        class1 = 1dao.push(class1);

        class2.setClass1(class1);

        class2 = 2dao.push(class2); //can throw exception   
      }
}

如果方法dao.push抛出异常,我希望在1道的帮助下进行数据库更改不会发生。在DAO级别中没有尝试捕获。 这是我使用MyManager的一个示例将一对对象推到一起的类:

  public class TestEnoceanDeviceManager extends BigClassForTestsWITHCOnfigurations{

  @Atowired
  MyManager myManager;

  @Test
      //the method
      public void testAddNewDevices(){

            .... defining class1 and class2....

            myManager.addNewDevices(class1, class2);
      }
  }

因此,方法testAddNewDevices仅从2dao.push()方法抛出非捕获的异常,并且不记录回滚。我尝试在不同的级别上捕获异常,但仍然没有回滚。 我做错了什么?

0 个答案:

没有答案