Spring MVC 4服务@tTransactional不起作用

南州市

1. Spring MVC application-context.xml

<tx:annotation-driven/>

    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
        <property name="username" value="test"/>
        <property name="password" value="test"/>
        <property name="url" value="jdbc:mysql://localhost:13306/test"/>
    </bean>

    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"/>
    </bean>

2. Service impl class

@Override
@Transactional
public void deleteCommentAndFiles(int commentId) {
    int deletedCommentCount = commentDAO.deleteComment(commentId);
    int deletedFileCount = fileDAO.deleteFiles(commentId);

    if (deletedCommentCount != 1) {
        throw new IncorrectUpdateSemanticsDataAccessException("Deleted comment not 1 [deletedCount : " + deletedCommentCount);
    }

    if (deletedFileCount != 1) {
        throw new IncorrectUpdateSemanticsDataAccessException("Deleted file not 1 [deletedCount : " + deletedCommentCount);
    }

}

3. Test Case

@Test
public void rollbackT() {
    boolean hasException = false;
    int sizeBeforDelete = commentDAO.selectCountByArticle(1);

    try {
        commentService.deleteCommentAndFiles(1);
    } catch (RuntimeException e) {
        hasException = true;
    }

    Assert.assertTrue(hasException);
    Assert.assertEquals(sizeBeforDelete, commentDAO.selectCountByArticle(1));

}

在测试用例中

首先Assert.assertTrue(hasException);通过,但

Assert.assertEquals(sizeBeforDelete, commentDAO.selectCountByArticle(1)) 这种情况下失败 Expected : 1 but Actual : 0

这第二个TC失败意味着发生异常,但不回滚删除注释

deleteCommentAndFiles method 抛出异常但不回滚

我正在尝试使用 @Transactional(propagation=Propagation.REQUIRED, rollbackFor={IncorrectUpdateSemanticsDataAccessException.class})

但同样行不通

为什么@Transactional注释不起作用?

Javlacerda

我也遇到过同样的问题。我将@transactional移到了控制器上才能正常工作。

@EnableTransactionManagement并仅在定义它们的相同应用程序上下文中在bean上查找@Transactional。这意味着,如果将注释驱动的配置放在DispatcherServlet的WebApplicationContext中,则仅检查控制器中的@Transactional bean。您的服务。有关更多信息,请参见第21.2节“ DispatcherServlet”。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Spring MVC 4服务@tTransactional不起作用

来自分类Dev

Spring MVC 4 ResourceHandlers不起作用

来自分类Dev

Spring MVC表单验证不起作用

来自分类Dev

Spring MVC请求映射不起作用

来自分类Dev

Spring MVC验证不起作用

来自分类Dev

Spring MVC,表单提交不起作用

来自分类Dev

@Range在Spring MVC中不起作用

来自分类Dev

SwaggerSpringMvcPlugin在Spring MVC上不起作用

来自分类Dev

OpenEntityManagerInViewFilter不起作用-Spring MVC

来自分类Dev

Spring MVC,表单提交不起作用

来自分类Dev

Spring MVC资源不起作用

来自分类Dev

Spring MVC @Pathvariable 不起作用

来自分类Dev

注销在 spring mvc 中不起作用

来自分类Dev

设置Cookie在Spring web-mvc 4中不起作用

来自分类Dev

Spring MVC国际化不起作用

来自分类Dev

Spring MVC语言环境更改不起作用

来自分类Dev

@Size和@Pattern注释在Spring MVC中不起作用

来自分类Dev

基于Spring MVC注释的配置不起作用

来自分类Dev

表单验证在Spring Mvc Application中不起作用

来自分类Dev

Spring MVC Custom Converter for JSON数据不起作用

来自分类Dev

Spring MVC页面到页面导航不起作用

来自分类Dev

Spring MVC JdbcTemplate事务注释不起作用

来自分类Dev

按名称自动接线在Spring MVC中不起作用

来自分类Dev

Spring MVC调度程序不起作用。HTTP 404

来自分类Dev

Spring MVC基本登录页面功能不起作用

来自分类Dev

Spring Mvc 测试 webapp @Autowired 注释不起作用

来自分类Dev

STS:使用 Spring MVC 提供 Web 内容不起作用

来自分类Dev

Spring MVC/Simple Post 请求不起作用

来自分类Dev

POST 方法在 Spring MVC 中不起作用