`@ Transactional`对于Spring 2控制器不起作用

穆罕默德汗:

我的应用程序中有一个旧的控制器,该控制器在xml中定义为Spring Bean,并使用Spring的SimpleFormController我试图onSubmit通过添加@Transactional注释来使控制器方法中的事务具有事务性,但是它不起作用。根据该指南,注释的调用必须在“ bean外部”进行,这是否意味着注释不能在像我的旧Spring控制器中使用?有其他选择或解决方法吗?

我知道它不起作用的原因是:1)对数据库所做的更改不会因错误而回滚(尽管事实上我已经定义了它rollbackFor = Exception.class,甚至在某些实例中使用过TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();,但在这种情况下它尝试使用后者)引发错误,指出不存在任何事务2)我@Transactional在Spring中实例化的位置添加了断点,但没有一个被命中。

编辑:所以人们要求代码的可复制示例。问题不在于业务逻辑代码之内,我正在寻找有关在Spring 2控制器中使用注释的清晰性。因此,例如,我有以下内容:

public class ImportController extends SimpleFormController {

    @Override
    @Transactional(rollbackFor = Exception.class)
    public ModelAndView onSubmit(HttpServletRequest request, HttpServletResponse response, Object command, BindException errors) throws Exception {
    ...
    }
}
罗曼·科诺瓦尔(Roman Konoval):

你是对的。@Transactional在这里不起作用,因为onSubmit是由同一个bean调用的。

并且在这种情况下,调用直接完成,默认的spring事务处理不起作用。

有关选项的详细说明,请参见此问题的答案

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

@Transactional在带有CrudRepository的Spring Boot中不起作用

如果它位于jar文件中,则基于Spring Annotation的控制器不起作用

请求输入无效时,控制器周围的Spring AOP不起作用

Spring Boot控制器重定向到/模板jsp页面不起作用

Spring @Transactional在ApplicationServer中不起作用

为什么我的Spring Boot错误控制器不起作用?

Spring Boot-为什么@valid在类型控制器上不起作用?

重定向在Spring控制器中不起作用

没有类级别的请求映射,Spring Boot注册Rest控制器不起作用

删除控制器不起作用

无法加载资源:服务器对控制器的状态为400(错误请求)的Spring JS调用响应不起作用

Spring @Transactional注释不起作用

Spring Autowired服务和控制器不起作用

离子2-加载控制器不起作用

Symfony控制器不起作用

通过Ajax提交表单不起作用,Spring控制器中的数据为空

在Spring MVC控制器中设置jQuery日期不起作用

Angularjs控制器不起作用

Bootstrap控制器不起作用

如何正确处理将数组发送到Spring MVC控制器方法的AJAX请求?为什么它不起作用?

控制器到某些功能的映射在已部署的Spring Boot应用程序中不起作用

Grails,Spring Security-登录控制器的导入不起作用

控制器不起作用

SpringMVC控制器不起作用

@Transactional 不起作用

控制器与 Spring 的连接不起作用

Spring @Transactional 回滚不起作用

Spring @Transactional 注释不起作用

Spring有效注释在控制器中不起作用