Spring事务

@Transactional:开启事务

public interface AccountService {
    /**
     * 转账操作
     * @param out 传出方
     * @param in 转入方
     * @param money 金额
     */
    //配置当前接口方法具有事务
    @Transactional
    void transfer(String out,String in ,Double money) ;
}

@EnableTransactionManagement:开启注解式事务驱动

@Configuration
@ComponentScan("com.lijun")
@PropertySource("classpath:jdbc.properties")
@Import({JdbcConfig.class,MybatisConfig.class})
//开启注解式事务驱动
@EnableTransactionManagement
public class SpringConfig {
}

//配置事务管理器,mybatis使用的是jdbc事务

public class JdbcConfig {
    @Value("${jdbc.driver}")
    private String driver;
    @Value("${jdbc.url}")
    private String url;
    @Value("${jdbc.username}")
    private String userName;
    @Value("${jdbc.password}")
    private String password;

    @Bean
    public DataSource dataSource(){
        DruidDataSource ds = new DruidDataSource();
        ds.setDriverClassName(driver);
        ds.setUrl(url);
        ds.setUsername(userName);
        ds.setPassword(password);
        return ds;
    }

    //配置事务管理器,mybatis使用的是jdbc事务
    @Bean
    public PlatformTransactionManager transactionManager(DataSource dataSource){
        DataSourceTransactionManager transactionManager = new DataSourceTransactionManager();
        transactionManager.setDataSource(dataSource);
        return transactionManager;
    }
}

事务的属性
@Transactional(rollbackFor = IOException.class):设置当前事务参与回滚的异常,默认非运行时异常不参与回滚
@Transactional(propagation = Propagation.REQUIRES_NEW):传播行为设置为当前操作需要新事务

你可能感兴趣的:(Spring事务)