zoukankan      html  css  js  c++  java
  • springboot事务处理-统一规范方法名

    import org.aspectj.lang.annotation.Aspect;
    import org.springframework.aop.Advisor;
    import org.springframework.aop.aspectj.AspectJExpressionPointcut;
    import org.springframework.aop.support.DefaultPointcutAdvisor;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.transaction.PlatformTransactionManager;
    import org.springframework.transaction.TransactionDefinition;
    import org.springframework.transaction.interceptor.DefaultTransactionAttribute;
    import org.springframework.transaction.interceptor.NameMatchTransactionAttributeSource;
    import org.springframework.transaction.interceptor.TransactionInterceptor;
    
     /**
          * <p>
          * 平台事务增强
          * </p>
          *
          * @author user
          */
        @Aspect
        @Configuration
        public class TransactionalConfigForBoot {
     
        
        private static final String AOP_POINTCUT_EXPRESSION = "execution(* com.***.service..*.*(..))";
        @Autowired
        private PlatformTransactionManager transactionManager;
        @Bean
        public TransactionInterceptor txAdvice() {
     
            DefaultTransactionAttribute txAttr_REQUIRED = new DefaultTransactionAttribute();
            txAttr_REQUIRED.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
     
            DefaultTransactionAttribute txAttr_REQUIRED_READONLY = new DefaultTransactionAttribute();
            txAttr_REQUIRED_READONLY.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
            txAttr_REQUIRED_READONLY.setReadOnly(true);
     
            NameMatchTransactionAttributeSource source = new NameMatchTransactionAttributeSource();
     
            source.addTransactionalMethod("save*", txAttr_REQUIRED);
            source.addTransactionalMethod("add*", txAttr_REQUIRED);
            source.addTransactionalMethod("create*", txAttr_REQUIRED);
            source.addTransactionalMethod("update*", txAttr_REQUIRED);
            source.addTransactionalMethod("delete*", txAttr_REQUIRED);
            source.addTransactionalMethod("exec*", txAttr_REQUIRED);
            source.addTransactionalMethod("set*", txAttr_REQUIRED);
            source.addTransactionalMethod("get*", txAttr_REQUIRED_READONLY);
            source.addTransactionalMethod("query*", txAttr_REQUIRED_READONLY);
            source.addTransactionalMethod("find*", txAttr_REQUIRED_READONLY);
            source.addTransactionalMethod("list*", txAttr_REQUIRED_READONLY);
            source.addTransactionalMethod("count*", txAttr_REQUIRED_READONLY);
            source.addTransactionalMethod("is*", txAttr_REQUIRED_READONLY);
     
            return new TransactionInterceptor(transactionManager, source);
        }
     
        @Bean
        public Advisor txAdviceAdvisor() {
            AspectJExpressionPointcut pointcut = new AspectJExpressionPointcut();
            pointcut.setExpression(AOP_POINTCUT_EXPRESSION);
            return new DefaultPointcutAdvisor(pointcut, txAdvice());
        }
    }
  • 相关阅读:
    Android之SQLite分页读取
    android 对sqlite数据库的增删改查
    Android如何导入已有的外部数据库(在raw下自己导入db文件)
    Android自定义对话框(Dialog)位置,大小
    android UI进阶之实现listview中checkbox的多选与记录
    Android开发教程 数据存储 SQLite
    Android 中的ORM框架
    android错误信息大整理
    C#中导出Execl
    关于用户退出,点击浏览器后退仍可回到原来页面解决二
  • 原文地址:https://www.cnblogs.com/sunxun001/p/13086413.html
Copyright © 2011-2022 走看看