Spring中的事務管理如何配置
這篇文章主要介紹了spring中的事務管理如何配置,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
在springboot中,使用事務非常的簡單,因為springboot已經(jīng)幫我們配置好了,只需要加上注解@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;
}
首先創(chuàng)建一個配置類:MainTxConfig
@EnableTransactionManagement //開啟事務管理
@ComponentScan("com.springTx") //掃描組件,這里掃描UserDao和UserService
@Configuration
public class MainTxConfig {
/**
* 配置數(shù)據(jù)源
* @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模板操作數(shù)據(jù)庫,這里需要獲取到數(shù)據(jù)源,dataSorce()是從容器中獲取已有的組件,而不是重新又創(chuàng)建一個數(shù)據(jù)源
* @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(){
//創(chuàng)建容器
AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(MainTxConfig.class);
UserService userService = applicationContext.getBean(UserService.class);
userService.insertUser();
applicationContext.close();
}
}
當出現(xiàn)異常時,事務會進行回滾操作。
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
一文詳解SpringBoot如何優(yōu)雅地實現(xiàn)異步調(diào)用
SpringBoot想必大家都用過,但是大家平時使用發(fā)布的接口大都是同步的,那么你知道如何優(yōu)雅的實現(xiàn)異步呢?這篇文章就來和大家詳細聊聊2023-03-03
解決Feign配置RequestContextHolder.getRequestAttributes()為null的問題
這篇文章主要介紹了解決Feign配置RequestContextHolder.getRequestAttributes()為null的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-01-01
java:無法訪問org.springframework.boot.SpringApplication的解決方法
這篇文章主要給大家介紹了關于java:無法訪問org.springframework.boot.SpringApplication的解決方法,文中通過實例代碼將解決的辦法介紹的非常詳細,需要的朋友可以參考下2023-01-01
SpringBoot?@DS注解實現(xiàn)多數(shù)據(jù)源配置以及問題解決辦法
這篇文章主要給大家介紹了關于SpringBoot?@DS注解實現(xiàn)多數(shù)據(jù)源配置以及問題解決辦法,所謂多數(shù)據(jù)源就是一個Java EE項目中采用了不同數(shù)據(jù)庫實例中的多個庫,或者是同一個數(shù)據(jù)庫實例中的多個不同庫,需要的朋友可以參考下2023-11-11
Java數(shù)據(jù)結構中的HashMap和HashSet詳解
HashMap和HashSet都是存儲在哈希桶之中,通過本文我們可以先了解一些哈希桶是什么,本文結合實例代碼給大家介紹的非常詳細,需要的朋友參考下吧2023-10-10
Java+Selenium實現(xiàn)控制瀏覽器的啟動選項Options
這篇文章主要為大家詳細介紹了如何使用java代碼利用selenium控制瀏覽器的啟動選項Options的代碼操作,文中的示例代碼講解詳細,感興趣的可以了解一下2023-01-01
MyBatis-Plus逆向工程——Generator的使用
這篇文章主要介紹了MyBatis-Plus逆向工程——Generator的使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-01-01

