spring事务入门案例-银行账户转账

spring事务入门案例-银行账户转账

  1. 在业务层接口上添加Spring事务管理

    public interface AccountService {
        /**
        * 转账操作
        * @param out 转出方
        * @param in 转入方
        * @param money 金额
        */
        @Transactional  // 开启事务
        public void transfer(String out, String in, Double money);
    }
    

    注意事项:Spring注解式事务通常添加到业务层接口中而不会添加到业务层实现类中,降低耦合。注解式事务可以添加到业务方法上表示当前方法开启事务,也可以添加到接口上表示当前接口所有方法开启事务。

  2. 设置事务管理器

    // JdbcConfig.java 配置类中
    @Bean   // 指定开启的具体事务
    public PlatformTransactionManager transactionManage(DataSource dataSource){
        DataSourceTransactionManager transactionManager = new DataSourceTransactionManager();
        transactionManager.setDataSource(dataSource);
        return transactionManager;
    }
    

    注意事项:事务管理器要根据实现技术进行选择,MyBatis框架使用的是JDBC事务。

  3. 开启注解式事务驱动

    @Configuration
    @ComponentScan("com.charley")
    @PropertySource("classpath:jdbc.properties")
    @Import({JdbcConfig.class, MyBatisConfig.class})
    @EnableTransactionManagement    // 告诉spring开启了事务
    public class SpringConfig {
    }