溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Spring中怎么配置事務(wù)管理

發(fā)布時(shí)間:2021-07-23 17:01:35 來源:億速云 閱讀:163 作者:Leah 欄目:編程語言

這篇文章給大家介紹Spring中怎么配置事務(wù)管理,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

在springboot中,使用事務(wù)非常的簡單,因?yàn)閟pringboot已經(jīng)幫我們配置好了,只需要加上注解@Transactional即可

在spring中我們需要做一些配置:主要有三點(diǎn):

@Transactional:在相應(yīng)的方法上加上這個(gè)注解  @EnableTransactionManagement:在配置類中加上,開啟事務(wù)管理  需要在配置類中加入PlatformTransactionManager

PlatformTransactionManager接口定義了兩個(gè)方法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)建一個(gè)配置類:MainTxConfig

@EnableTransactionManagement //開啟事務(wù)管理@ComponentScan("com.springTx") //掃描組件,這里掃描UserDao和UserService@Configurationpublic 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)建一個(gè)數(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

@Servicepublic class UserService {  @Autowired  private UserDao userDao;  @Transactional  public void insertUser(){    userDao.insert();    int n = 1/0;    System.out.println("插入成功");  }}

UserDao:

@Repositorypublic 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();  }}

當(dāng)出現(xiàn)異常時(shí),事務(wù)會(huì)進(jìn)行回滾操作。

關(guān)于Spring中怎么配置事務(wù)管理就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI