AOP事务处理

事务处理底层使用AOP原理

Spring事务管理API

  接口:PlatformTransactionMarager  

    1.DataSourceTransationManager  JDBC  mybatis

    2.HibernateTranstionManager 

具体实现:

  1.创建数据源连接池

    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">

      <property name="url" value="" />

      <property name="username" value="" />

      <property name="password" value="" />

      <property name="driverClassName" value="" />

    </bean>

  2.创建事务管理器

    <bean id = "transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">

      //注入数据源

      <property name="dataSource" ref="dataSource" />

    </bean>

  3.开启事务注解

    <tx:annotation-driven transaction-manager="transactionManager" / >

  4.在service类上面或方法上面添加事务注解

    @Transactional

    public void UserService(){

    }

    @Transactional

      1.可以使用在类上面,也可以使用在方法上面。 在类上面全部方法都加入事务

      2.@Transactional (propagation.Propagation.REQUIRED)属性说明

        1)propagation  事务传播行为

          required

          required_new

        2)isolation  事务到隔离级别  

          有三个问题: 脏读, 不可重复读,虚读

          mysql 默认使用REPEATABLE READ

        3)timeout  超时

        4)readOnly  只读

        5)rollbackFor  回滚

        6)noRollbackFor  不回滚

 

xml方式设置事务

  1.配置事务管理器

  2.配置通知

    <tx:advice id="txadvice">

      <tx:attrbutes>

        指定到那些方法上面添加事务,可以用通配符 * 

        <tx:method name="account*" propagation=“REQUIRED”/>

      </tx:attrbutes>

    </tx:advice>

  3.配置切入点和切面

    <aop:config>

      配置切入点

      <aop:pointcut id="pt" expression="切入点表达式" />

      配置切面

      <aop:advice-ref="txadvice" pointcut-ref="pt" />

    </aop:config>

 

完全注解开发

  @Configuration  //配置类

  @ComponentScan(basePackages="com.duobee")  //开启组件扫描

  @EnableTransactionManagement //开启事务

  public classTxConfig{

    //创建连接池

    @Bean

    public DruidDataSource getDruidDataSource(){

      DruidDataSource dataSource = new DruidDataSource();

      dataSource.setDriverClassName();

      .......

      return dataSource;

    }

    //创建JdbcTemplate对象

    //创建事务管理对象 DataSourceTransactionManager(DataSource datasource)

    

  }

posted @ 2020-11-23 13:42  doubisme  阅读(315)  评论(0)    收藏  举报