Spring中的事務管理如何配置
阿新 • • 發佈:2020-01-07
這篇文章主要介紹了spring中的事務管理如何配置,文中通過示例程式碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
在springboot中,使用事務非常的簡單,因為springboot已經幫我們配置好了,只需要加上註解@Transactional即可
在spring中我們需要做一些配置:主要有三點:
- @Transactional:在相應的方法上加上這個註解
- @EnableTransactionManagement:在配置類中加上,開啟事務管理
- 需要在配置類中加入PlatformTransactionManager
PlatformTransactionManager介面定義了兩個方法commit和rollback
public interface PlatformTransactionManager { TransactionStatus getTransaction(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(); } }
當出現異常時,事務會進行回滾操作。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。