VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 编程开发 > Java教程 >
  • 工作中的一些小总结(2)

继续总结

  1. VUE数据修改后,页面或者样式未生效
    主要是因为数据层次过深,没有触发render函数进行自动更新,需手动调用
    this.$forceUpdate();

  2. @Transactional 注解,当方法出现异常时未生效
    有几种情况会出现事务未生效的状况

    • 方法上使用了 @Transactional 注解,在方法中捕获了异常,没有抛出。例如方法B出现异常时,方法A依然会插入入库
      @Transactional
      public void insert(){
      try {
      TestPO testPO = new TestPO();
      testPO.setName("测试1");
      //方法A demoMapper.insert(testPO);
      //方法B testService.batchInsert();
      } catch (Exception e) {
      e.printStackTrace();
      }
      }

    • controller调用service层方法A时,方法A上未加@Transactional 注解,方法A调用了 加了@Transactional 注解的方法B
      controller层
      `public void insert(){
      service.methodA();

      }`

      service层
      public void methodA(){
      methodB();
      }

    @Transactional public void methodB(){ mapper.insert(); }

    这种情况注解也不会生效,原因主要是因为在SpringIoC容器中返回的对象是代理对象而不是真实的对象
    只有被动态代理的对象在调用时才会产生事务。
    这里的methodB()就等于this.methodB()调用的是真实的对象,不是Spring管理的代理对象。
    若还是想通过methodA() 调用 methodB() 可以使用
    public void methodA(){
    ((当前类名)AopContext.currentProxy()).methodB()
    }

出处:https://www.cnblogs.com/lazyfox/p/13915682.html

相关教程