Spring中的事务管理如何配置

 更新时间:2019年11月20日 10:11:00   作者:闻窗  
这篇文章主要介绍了spring中的事务管理如何配置,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

这篇文章主要介绍了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();
  }
}

当出现异常时,事务会进行回滚操作。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • springboot打包jar和war包的教程图解

    springboot打包jar和war包的教程图解

    这篇文章主要介绍了springboot打包jar和war包的方法,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-06-06
  • SpringBoot集成ip2region实现ip白名单的代码示例

    SpringBoot集成ip2region实现ip白名单的代码示例

    ip2region v2.0 - 是一个离线IP地址定位库和IP定位数据管理框架,10微秒级别的查询效率,提供了众多主流编程语言的 xdb 数据生成和查询客户端实现,本文介绍了SpringBoot集成ip2region实现ip白名单的代码工程,需要的朋友可以参考下
    2024-08-08
  • 关于Selenium的UI自动化测试屏幕截图功能实例代码

    关于Selenium的UI自动化测试屏幕截图功能实例代码

    今天小编就为大家分享一篇关于Selenium的UI自动化测试屏幕截图功能实例代码,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • Java中集合List、Set和Map的入门详细介绍

    Java中集合List、Set和Map的入门详细介绍

    Java集合主要分为三种类型:Set(集)、List(列表)和Map(映射),下面这篇文章主要给大家介绍了关于Java中集合List、Set和Map的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-01-01
  • SpringBoot初始化加载配置的八种方式总结

    SpringBoot初始化加载配置的八种方式总结

    在日常开发时,我们常常需要 在SpringBoot应用启动时执行某一段逻辑,如获取一些当前环境的配置或变量、向数据库写入一些初始数据或者连接某些第三方系统,确认对方可以工作,那么在实现初始化逻辑代码时就需要小心了,所以本文介绍了SpringBoot初始化加载配置的方式
    2024-12-12
  • Java方法参数传递如何实现

    Java方法参数传递如何实现

    这篇文章主要介绍了Java方法参数传递如何实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05
  • 详解Kotlin的空指针处理

    详解Kotlin的空指针处理

    这篇文章主要介绍了详解Kotlin的空指针处理的相关资料,需要的朋友可以参考下
    2017-06-06
  • 利用Java实现调用http请求

    利用Java实现调用http请求

    在实际开发过程中,我们经常需要调用对方提供的接口或测试自己写的接口是否合适。本文就为大家准备了几个java调用http请求的几种常见方式,需要的可以参考一下
    2022-08-08
  • Java毕业设计实战之二手书商城系统的实现

    Java毕业设计实战之二手书商城系统的实现

    这是一个使用了java+JSP+Springboot+maven+mysql+ThymeLeaf+FTP开发的二手书商城系统,是一个毕业设计的实战练习,具有在线书城该有的所有功能,感兴趣的朋友快来看看吧
    2022-01-01
  • java split结果去除空字符串的方法实现

    java split结果去除空字符串的方法实现

    在Java开发中,我们经常需要对字符串进行分割操作,本文主要介绍了java split结果去除空字符串的方法实现,具有一定的参考价值,感兴趣的可以了解一下
    2023-10-10

最新评论