Spring中的事务管理如何配置
这篇文章主要介绍了spring中的事务管理如何配置,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
在springboot中,使用事务非常的简单,因为springboot已经帮我们配置好了,只需要加上注解@Transactional即可
在spring中我们需要做一些配置:主要有三点:
- @Transactional:在相应的方法上加上这个注解
- @EnableTransactionManagement:在配置类中加上,开启事务管理
- 需要在配置类中加入PlatformTransactionManager
PlatformTransactionManager接口定义了两个方法commit和rollback
publicinterfacePlatformTransactionManager{
TransactionStatusgetTransaction(TransactionDefinitionvar1)throwsTransactionException;
voidcommit(TransactionStatusvar1)throwsTransactionException;
voidrollback(TransactionStatusvar1)throwsTransactionException;
}
首先创建一个配置类:MainTxConfig
@EnableTransactionManagement//开启事务管理
@ComponentScan("com.springTx")//扫描组件,这里扫描UserDao和UserService
@Configuration
publicclassMainTxConfig{
/**
*配置数据源
*@return
*@throwsException
*/
@Bean
publicDataSourcedataSorce()throwsException{
ComboPooledDataSourcecomboPooledDataSource=newComboPooledDataSource();
comboPooledDataSource.setUser("root");
comboPooledDataSource.setPassword("123456");
comboPooledDataSource.setDriverClass("com.mysql.jdbc.Driver");
comboPooledDataSource.setJdbcUrl("jdbc:mysql://localhost:3306/study");
returncomboPooledDataSource;
}
/**
*jdbc模板操作数据库,这里需要获取到数据源,dataSorce()是从容器中获取已有的组件,而不是重新又创建一个数据源
*@return
*@throwsException
*/
@Bean
publicJdbcTemplatejdbcTemplate()throwsException{
returnnewJdbcTemplate(dataSorce());
}
@Bean
publicPlatformTransactionManagerplatformTransactionManager()throwsException{
returnnewDataSourceTransactionManager(dataSorce());
}
}
UserService
@Service
publicclassUserService{
@Autowired
privateUserDaouserDao;
@Transactional
publicvoidinsertUser(){
userDao.insert();
intn=1/0;
System.out.println("插入成功");
}
}
UserDao:
@Repository
publicclassUserDao{
@Autowired
privateJdbcTemplatejdbcTemplate;
publicvoidinsert(){
Stringsql="insertintouser(name,age)value(?,?)";
Stringname=UUID.randomUUID().toString().substring(1,7);
jdbcTemplate.update(sql,name,20);
}
}
测试:
publicclassTxtest{
@Test
publicvoidtest(){
//创建容器
AnnotationConfigApplicationContextapplicationContext=newAnnotationConfigApplicationContext(MainTxConfig.class);
UserServiceuserService=applicationContext.getBean(UserService.class);
userService.insertUser();
applicationContext.close();
}
}
当出现异常时,事务会进行回滚操作。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。