微前端架构如何改变企业的开发模式与效率提升
330
2023-07-10
Spring中的事务管理如何配置
这篇文章主要介绍了spring中的事务管理如何配置,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
在springboot中,使用事务非常的简单,因为springboot已经帮我们配置好了,只需要加上注解@Transactional即可
在spring中我们需要做一些配置:主要有三点:
@Transactional:在相应的方法上加上这个注解
@EnableTransactionManagement:在配置类中加上,开启事务管理
需要在配置类中加入PlatformTransactionManager
PlatformTransactionManager接口定义了两个方法commit和rollback
public interface PlatformTransactionManager {
TransactionStatus getTranhttp://saction(TransactionDefinition var1) throws TransactionException;
void commit(TransactionStatus var1) throws TransactionException;
void rollback(TransactionStatus var1) throws TransactionException;
}
首先创建一个配置类:MainTxConfig
@EnableTransactionManagement //开启事务管理
@ComponentScan("com.springTx") //扫描组件,这里扫描UserDao和UserService
@Configuration
public class MainTxConfig {
/**
* 配置数据源
* @return
* @throws Exception
*/
@Bean
public DataSource dataSorce() throws Exception {
ComboPooledDataSource comboPooledDataSource = new ComboPooledDataSource();
comboPooledDataSource.setUser("root");
comboPooledDataSource.setPassword("123456");
comboPooledDataSource.setDriverClass("com.mysql.jdbc.Driver");
comboPooledDataSource.setJdbcUrl("jdbc:mysql://localhost:3306/study");
return comboPooledDataSource;
}
/**
* jdbc模板操作数据库,这里需要获取到数据源,dataSorce()是从容器中获取已有的组件,而不是重新又创建一个数据源
* @return
* @throws Exception
*/
@Bean
public JdbcTemplate jdbcTemplate() throws Exception {
return new JdbcTemplate(dataSorce());
}
@Bean
public PlatformTransactionManager platformTransactionManager() throws Exception {
return new DataSourceTransactionManager(dataSorce());
}
}
UserService
@Service
public class UserService {
@Autowired
private UserDao userDao;
@Transactional
public void insertUser(){
userDao.insert();
int n = 1/0;
System.out.println("插入成功");
}
}
UserDao:
@Repository
public class UserDao {
@Autowired
private JdbcTemplate jdbcTemplate;
public void insert(){
String sql = "insert into user (name,age) value(?,?)";
String name = UUID.randomUUID().toString().substring(1,7);
jdbcTemplate.update(sql,name, 20);
}
}
测试:
public class Txtest {
@Test
public void test(){
//创建容器
AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(MainTxConfig.class);
UserService userService = applicationContext.getBean(UserService.class);
userService.insertUser();
applicationContext.close();
}
}
当SboLHPsO出现异常时,事务会进行回滚操作。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~