zoukankan      html  css  js  c++  java
  • spring boot 中 事务配置

    package org.whm.appcore;
    
    import java.util.Properties;
    
    import javax.sql.DataSource;
    
    import org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.beans.factory.annotation.Qualifier;
    import org.springframework.context.annotation.Bean;
    import org.springframework.jdbc.datasource.DataSourceTransactionManager;
    import org.springframework.stereotype.Component;
    import org.springframework.transaction.interceptor.TransactionInterceptor;
    
    @Component
    public class TxConfig {
    
        // 创建事务管理器
        @Bean(name = "txManager")
        public DataSourceTransactionManager getTx(@Autowired DataSource ds) {
            DataSourceTransactionManager dsTx = new DataSourceTransactionManager(ds);
            return dsTx;
        }
    
        // 创建事务通知。。
    
        @Bean(name = "txAdvice")
        public TransactionInterceptor getAdvisor(@Qualifier("txManager") DataSourceTransactionManager txManager)
                throws Exception {
            TransactionInterceptor tsi = new TransactionInterceptor();
            Properties properties = new Properties();
            properties.setProperty("get*", "PROPAGATION_REQUIRED,-Exception,readOnly");
            properties.setProperty("add*", "PROPAGATION_REQUIRED,-Exception,readOnly");
            properties.setProperty("save*", "PROPAGATION_REQUIRED,-Exception,readOnly");
            properties.setProperty("update*", "PROPAGATION_REQUIRED,ISOLATION_DEFAULT,-Exception,readOnly");
    
            tsi.setTransactionAttributes(properties);
            return tsi;
    
        }
    
        @Bean
        public BeanNameAutoProxyCreator txProxy() {
            BeanNameAutoProxyCreator creator = new BeanNameAutoProxyCreator();
            creator.setInterceptorNames("txAdvice");
            creator.setBeanNames("*Service", "*ServiceImpl");
            creator.setProxyTargetClass(true);
            return creator;
        }
    }
  • 相关阅读:
    js_浏览器对象模型BOM---通过对象来抽象浏览器功能
    js_dom 之事件注册、移除 、pageX
    js组成之dom_dom对象样式操作及运用
    js_组成之DOM_dom对象的注册事件及属性操作
    js_字符串、数组常用方法及应用
    js_内置对象Date Math
    Caffe入门学习(代码实践)
    char和uchar区别
    c/c++中过滤文件路经 后缀
    shell中$(( )) 、 $( ) 、${ }的区别
  • 原文地址:https://www.cnblogs.com/whm-blog/p/7262101.html
Copyright © 2011-2022 走看看