zoukankan      html  css  js  c++  java
  • spring 局部事务

    spring 支持注解式事务,作用于方法级别,我们如果想将事务放进行级别,可以使用编程式事务,如使用 TransactionTemplate。还有另外一种使用 Lambda 表达式,结合事务注解来达到行级别的事务,通过将一个方法接口传入,在一个注解事务方法中执行,就达到了行级别的事务控制。

    public class Transactions {
    
        private static final ThreadLocal<Boolean> tl = new ThreadLocal<>();
    
        @Transactional(propagation = Propagation.REQUIRES_NEW, rollbackFor = Throwable.class, timeout = 15)
        public <T> T requiredNew(Supplier<T> supplier) {
            Boolean flag = tl.get();
            if (flag != null) {
                throw new RuntimeException("nested transaction is not supported!");
            }
            try {
                tl.set(true);
                return supplier.get();
            } finally {
                tl.remove();
            }
        }
    
        @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Throwable.class, timeout = 15)
        public <T> T required(Supplier<T> supplier) {
            return supplier.get();
        }
    }
    
    @Service
    public class Dmeo{
      @Autowired
      private Transactions transactions;
    
      public void demo(){
          transactions.required(() -> {
          //  do something
          });
      }
    }
    
  • 相关阅读:
    【nodejs】使用Node.js实现REST Client调用REST API
    [Groovy] Groovy && JNI
    一些很实用的Maven Plugins
    秋天到了
    今天头好疼
    想起那个人的时候
    不知道标题
    生活让我懂得
    显示实现接口和实现接口
    Foreach原理
  • 原文地址:https://www.cnblogs.com/diandiandidi/p/15741635.html
Copyright © 2011-2022 走看看