Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring(DataSourceTransactionManager)@Transactible不会回滚_Java_Spring_Transactions_Datasource - Fatal编程技术网

Java Spring(DataSourceTransactionManager)@Transactible不会回滚

Java Spring(DataSourceTransactionManager)@Transactible不会回滚,java,spring,transactions,datasource,Java,Spring,Transactions,Datasource,我正在尝试配置Spring事务,但它们似乎不起作用 这是我的ConfigJava类,我在其中定义了Datasource、JdbcTemplates和我使用的所有DAO @Configuration @PropertySource("${configuration.properties.path}") @EnableTransactionManagement public class BeanConfiguration { ...different DAOs... @Overrid

我正在尝试配置Spring事务,但它们似乎不起作用

这是我的ConfigJava类,我在其中定义了Datasource、JdbcTemplates和我使用的所有DAO

@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方法引发异常,我希望在1dao的帮助下所做的DB更改不会发生。刀级内没有试捕。 在这个类中,我使用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方法中抛出一个未捕获的异常,而不记录回滚。我试图在不同的层次上捕捉异常,但仍然无法回退。
我做错了什么?

首先,你的代码没有意义@ContextConfiguration用于测试,@TransactionConfiguration也适用于普通bean,但它不起任何作用。我还想知道为什么testAddNewDevices应该做任何事情,因为它既没有注释,也不是Spring单元测试。所以我不确定你想做什么,但你在这里发布的内容充其量也令人困惑。@m.Deinum它是一个测试类,id的工作方式与测试类类似,但它在内部方法中看不到可事务性。而且永远不会,因为Spring AOP就是这样工作的。它不是一个基于Spring的测试类,因为@ContextConfiguration本身不起作用。另外,@Service类上的@ContextConfiguration也没有意义。所以你把很多东西混在一起了,这些东西混在一起没有意义。看来你需要一些学习…我不是春天的教授。。。但是如果没有上下文配置和服务注释,它就不能正常工作。@service是正确的,@Transactional之外的其他服务没有意义。