public interface PlatformTransactionManager {
void commit(TransactionStatus status) throws TransactionException;
void rollback(TransactionStatus status) throws TransactionException;
}
public class DataSourceTransactionManager {
...
}
步骤:
public interface AccountService {
@Trabsactional
public void transfer(String out, String in, Double money);
}
注意: Spring注解式事务通常添加在业务层接口中而不会添加到业务层实现类中,降低耦合;
注解式事务可以添加到业务方法上表示当前方法开启事务,也可以添加到接口上表示当前接口所有方法开启事务。
//配置事务管理器,mybatis使用的是jdbc事务
@Bean
public PlatformTransactionManager transactionManager(DataSource dataSource){
DataSourceTransactionManager transactionManager = new DataSourceTransactionManager();
transactionManager.setDataSource(dataSource);
return transactionManager;
}
PlatformTransactionManager : Spring 提供的标准接口
DataSourceTransactionManager : Spring 提供的实现类,用的是jdbc事务
如果要换,接口不能动,换实现类。
记得要注入 dataSource
注意: 事务管理器要根据实现技术进行选择,mybatis框架使用的是jdbc事务
@Configuration
@ComponentScan("com.itheima")
@PropertySource("classpath:jdbc.priperties")
@Import({JdbcConfig.class,MybatisConfig.class})
@EnableTransactionManagement
public class SpringConfig{
}




@Transactional(propagation = Propagation.REQUIRES_NEW)
public interface LogService {
//propagation设置事务属性:传播行为设置为当前操作需要新事务
@Transactional(propagation = Propagation.REQUIRES_NEW)
void log(String out, String in, Double money);
}
