精华内容
下载资源
问答
  • controller层使用@Transactional事务注解

    千次阅读 2020-08-05 14:57:33
    controller层使用@Transactional注解是无效的。但是可以在controller层方法的catch语句中增加:TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();语句,手动回滚,这样上层就无需去处理异常 ...

    我们都知道,@Transactional要放在service层,并且只需要放到最外层的方法上就可以了。

    controller层使用@Transactional注解是无效的。但是可以在controller层方法的catch语句中增加:TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();语句,手动回滚,这样上层就无需去处理异常

    	@RequestMapping(value = "/delrecord", method = {RequestMethod.GET})
    	@Transactional(rollbackFor = Exception.class)
    	public String delRecord(HttpServletRequest request) {
    		try {
            //省略业务代码……
    		} catch (Exception e) {
    			log.error("操作异常",e);
    			TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();//contoller中增加事务
    			return failure("操作失败!");
    		}
    	}

     

     
    展开全文
  • 注解事务不生效的原因可能是因为代码中使用了try catch代码块进行了处理,因为事务使用的是动态代理,代理类接收不到异常,所以就不会调用回滚方法。 解决方法:直接向上抛异常或者在catch里再把异常抛出去。 ...

    注解事务不生效的原因可能是因为代码中使用了try catch代码块进行了处理,因为事务使用的是动态代理,代理类接收不到异常,所以就不会调用回滚方法。

    解决方法:直接向上抛异常或者在catch里再把异常抛出去。

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

    通常情况下,我们都是在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的方法中加事务的例子,解决办法仅供参考。

    展开全文
  • mybatis 事务注解(spring包的,不是javax包的) 必须在 serviceImpl方法上才有效。controller方法上无效。已测试。 @Override @Transactional //#####事务在Slot Controller不生效。已测试。【必须在...

    mybatis 事务注解(spring包的,不是javax包的) 必须加在 service层Impl方法上才有效。加在controller方法上无效。已测试。

      

        @Override
        @Transactional //#####事务加在Slot  Controller不生效。已测试。【必须加在service层。】
        public int updateByPrimaryKeySelective(AdslotDO record) {
            //==========》add service方法。修改广告位同时,把广告位新的dealID同步到 流量配置 表。
            ruleService.updateAdSlotIdsBySlot(record);//service层业务逻辑。
            return ccAdslotMapper.updateByPrimaryKeySelective(record);
        }







    展开全文
  • 事务加controller层和service有什么区别, 说是在controller层加事务针对安全性要求较高的系统,为什么?
  • Spring MVC中,事务是否可以Controller层  一般而言,事务都是在Service层的,但是爱钻牛角尖的我时常想:事务加Controller层可不可以。我一直试图证明事务不止可以在Service层,还可以Controller层...
  • 在Spring MVC中,事务可以... 一般而言,事务都是在Service层的,但是爱钻牛角尖的我时常想:事务加Controller层可不可以。我一直试图证明事务不止可以在Service层,还可以Controller层,但是没有找到有力
  • 1、Dao Dao,又称为数据访问(Data Access Object),其中规定这的目的就在于让这个下面类只和数据库的增删改查相关,不做多余的业务逻辑判断。 2、Service Service叫服务,Service对一个或多...
  • 文章目录1 xml代码2 原因说明2.1 俩容器关系2.2 全部放到spring.xml2.3 全部放到springmvc.xml 1 xml代码 在springmvc中,我们经常配置两个...一般我们在spring.xml中不扫描@Controller注解,在springmvc.xml中不扫...
  • 今天面试的时候, 一个面试官问我,,, 事务一般是在 service 的,为什么不controller ? 我 突然懵了,没听过 要 web的,而且觉得 这样加上去有用? 没有想过这样的问题: 而其实 事务是可以 在...
  • 2.需要开启事务的mapping添加 DefaultTransactionDefinition def=new DefaultTransactionDefinition(); def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED); TransactionStatus status = ...
  • 能将事务管理配置到Controller层吗?

    千次阅读 2017-08-01 15:34:59
    我们通常会在Service进行事务管理,难道不能在Contoller实现? (我觉得这个问题,对于每一个不仅仅是为了编程而编程的程序员在最初接触切面编程时都是一个比较大的疑问,尤其是强迫症患者或者懒得写Service...
  • 什么是事务? 在数据库中,所谓事务是指一组逻辑操作单元即一组sql语句。...判断事务是否配置成功的关键点在于出现异常时事务是否会回滚 事务四大特性 1. 原子性(Atomicity) 原子性是指事务是一个...
  • Transaction在Controller层的探索

    千次阅读 热门讨论 2018-03-23 18:43:22
    Transaction在Controller层的探索 ...那么放到Controller层事务会生效吗?会产生什么问题呢?下面一起来看看 I、透过现象看本质 第一种情况 Controller层代码如下 @RestController @Request...
  • 业务思路:目前项目记录日志方式采用springAOP操作,切面是通过拦截注解进行的,但是最近发现,新在service注解不会生效(以往注解都是写在controller的!!而且都是正常使用) 切面: ![图片说明]...
  • 这个时候事务注解,就只能controller层。通常情况下我们都是在service层去使用@Transactional这一注解,来完成规定的注解。通常我们一般都会在加载spring容器之后,去扫描service注解,去加载我们的service bean...
  • springboot2.3.4自定义注解在service层不生效 ,放到controller层生效 开始认为是没有扫描到service 但是配置了一下还是不生效
  • 分享下项目中使用的两个十分有效的注解,用于对Controller层异常实现全局统一处理,十分nice! 1、前言 对于与数据库相关的 Spring MVC 项目,我们通常会把事务配置在 Service层,当数据库操作失败时让 Service ...
  • 第一个: 事务的声明是在spring里面进行声明的. <bean id = "transactionManager" class = "org.springframework.jdbc.datasource.DataSourceTransactionManager"><...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 33,393
精华内容 13,357
关键字:

controller层加事务注解