关于Springboot在controller层加@Transactional注解,导致整个类无法访问的问题解决。

通常情况下,我们都是在service层实现的事务管理。但是在一些访问页面的controller方法中,需要使用事务。但是在方法上加上@Transactional注解,会导致访问整个controller的方法报404。一种解决方法如下:
**一,注入PlatformTransactionManager。 **

@Resource
private PlatformTransactionManager transactionManager;

二,测试的方法如下:

    @RequestMapping("save")
    @ResponseBody
    public String save(Object a, Object b){
        DefaultTransactionDefinition defaultTransactionDefinition = new DefaultTransactionDefinition();
        defaultTransactionDefinition.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
        TransactionStatus status = transactionManager.getTransaction(defaultTransactionDefinition);

        try {
            service.saveObjectA(a);
            service.saveObjectB(b);
            transactionManager.commit(status);
        } catch (Exception e) {
            e.printStackTrace();
            transactionManager.rollback(status);
            return "save failed";
        }

        return "save successful";
    }

三,这样就实现了当saveObjectB()出现异常时,saveObjectA()对数据库的操作进行了回滚。
以上就是在controller的方法中加事务的例子,解决办法仅供参考。