最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring注解 TX聲明式事務(wù)實(shí)現(xiàn)過程解析

 更新時(shí)間:2020年04月03日 12:01:19   作者:農(nóng)夫三拳有點(diǎn)疼~  
這篇文章主要介紹了Spring注解 - TX 聲明式事務(wù)實(shí)現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

環(huán)境搭建導(dǎo)入

maven依賴

<!--spring提供的數(shù)據(jù)庫操作工具-->
<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-jdbc</artifactId>
  <version>5.0.2.RELEASE</version>
</dependency>
<!--c3p0 數(shù)據(jù)庫連接池-->
<dependency>
  <groupId>com.mchange</groupId>
  <artifactId>c3p0</artifactId>
  <version>0.9.5.5</version>
</dependency>
<!--mysql連接器-->
<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
  <version>5.1.48</version>
</dependency>

配置數(shù)據(jù)庫相關(guān)信息

@Configuration
@ComponentScan("com.spring.tx")
public class TxConfig {
  /**
   * 配置數(shù)據(jù)源
   */
  @Bean
  public DataSource dataSource() throws PropertyVetoException {
    ComboPooledDataSource comboPooledDataSource = new ComboPooledDataSource();
    comboPooledDataSource.setUser("root");
    comboPooledDataSource.setPassword("root");
    comboPooledDataSource.setDriverClass("com.mysql.jdbc.Driver");
    comboPooledDataSource.setJdbcUrl("jdbc:mysql:///test");
    return comboPooledDataSource;
  }

  @Bean
  public JdbcTemplate jdbcTemplate() throws PropertyVetoException {
    //Spring對(duì)配置類做了特殊處理,多次調(diào)用給容器中加組件的方法,其實(shí)是從容器中找組件,并不會(huì)重新添加
    return new JdbcTemplate(dataSource());
  }
}

添加數(shù)據(jù)訪問層、業(yè)務(wù)層

@Repository
public class UserDao {
  @Autowired
  private JdbcTemplate jdbcTemplate;

  public void saveUser(String name, Integer age) {
    String sql = "insert into user(name, age) values(?, ?)";
    jdbcTemplate.update(sql, name, age);
  }
}
@Service
public class UserService {
  @Autowired
  private UserDao userDao;

  public void saveUser(){
    String name = "jack11";
    Integer age = 19;
    userDao.saveUser(name, age);
  }
}

添加測(cè)試類

public class TxTest {
  @Test
  public void test(){
    ApplicationContext context = new AnnotationConfigApplicationContext(TxConfig.class);
    UserService userService = (UserService) context.getBean("userService");
    userService.saveUser();
  }
}

事務(wù)問題

此時(shí)基本環(huán)境已經(jīng)搭建好了,點(diǎn)擊運(yùn)行,數(shù)據(jù)可以成功插入但是還沒有配置事務(wù),沒有事務(wù)回滾會(huì)造成某些情況下數(shù)據(jù)出錯(cuò)。在Spring注解中,可以在需要添加事務(wù)的方法或類上加@Transactional,并且開啟事務(wù)管理功能,即@EnableTransactionManagement,代碼如下:

修改UserService 的 saveUser 方法

@Transactional
public void saveUser(){
  String name = "jack11";
  Integer age = 19;
  userDao.saveUser(name, age);
  //模擬異常
  int i = 1 / 0;
}

在配置類加上@EnableTransactionManagement

@Configuration
@ComponentScan("com.spring.tx")
@EnableTransactionManagement
public class TxConfig {
	//省略數(shù)據(jù)源、jdbcTemplate的配置
}

再次運(yùn)行測(cè)試方法,會(huì)發(fā)現(xiàn)報(bào)錯(cuò)了,但不是我們模擬的異常報(bào)錯(cuò),控制臺(tái)提示找不到bean

org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'org.springframework.transaction.PlatformTransactionManager' available

我們還需要注冊(cè)一個(gè)事務(wù)管理器來管理事務(wù),PlatformTransactionManager有很多實(shí)現(xiàn)類,在Spring 中 JdbcTemplate、Mybatis應(yīng)該使用 DataSourceTransactionManager

在配置類中再注冊(cè)一個(gè)組件,運(yùn)行,事務(wù)生效

/**
 * 注冊(cè)事務(wù)管理器
 */
@Bean
public PlatformTransactionManager platformTransactionManager() throws PropertyVetoException {
  return new DataSourceTransactionManager(dataSource());
}

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 深入解析Java的設(shè)計(jì)模式編程中的模板方法模式

    深入解析Java的設(shè)計(jì)模式編程中的模板方法模式

    這篇文章主要介紹了深入解析Java的設(shè)計(jì)模式編程中的模板方法模式, 模版方法模式由一個(gè)抽象類和一個(gè)(或一組)實(shí)現(xiàn)類通過繼承結(jié)構(gòu)組成,需要的朋友可以參考下
    2016-02-02
  • Eureka源碼閱讀之環(huán)境搭建及工程結(jié)構(gòu)

    Eureka源碼閱讀之環(huán)境搭建及工程結(jié)構(gòu)

    這篇文章主要為大家介紹了Eureka源碼閱讀之環(huán)境搭建的工程結(jié)構(gòu)及調(diào)試需知詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪<BR>
    2022-10-10
  • Java實(shí)現(xiàn)按年月打印日歷功能【基于Calendar】

    Java實(shí)現(xiàn)按年月打印日歷功能【基于Calendar】

    這篇文章主要介紹了Java實(shí)現(xiàn)按年月打印日歷功能,涉及java基于Calendar進(jìn)行日期運(yùn)算的相關(guān)操作技巧,需要的朋友可以參考下
    2018-03-03
  • Java深入淺出數(shù)組的定義與使用上篇

    Java深入淺出數(shù)組的定義與使用上篇

    數(shù)組是有序的元素序列,若將有限個(gè)類型相同的變量的集合命名,那么這個(gè)名稱為數(shù)組名。組成數(shù)組的各個(gè)變量稱為數(shù)組的分量,也稱為數(shù)組的元素,有時(shí)也稱為下標(biāo)變量。數(shù)組是在程序設(shè)計(jì)中,為了處理方便, 把具有相同類型的若干元素按有序的形式組織起來的一種形式
    2022-03-03
  • Mybatis使用collection標(biāo)簽進(jìn)行樹形結(jié)構(gòu)數(shù)據(jù)查詢時(shí)攜帶外部參數(shù)查詢

    Mybatis使用collection標(biāo)簽進(jìn)行樹形結(jié)構(gòu)數(shù)據(jù)查詢時(shí)攜帶外部參數(shù)查詢

    這篇文章主要介紹了Mybatis使用collection標(biāo)簽進(jìn)行樹形結(jié)構(gòu)數(shù)據(jù)查詢時(shí)攜帶外部參數(shù)查詢,需要的朋友可以參考下
    2023-10-10
  • Java中ArrayList和LinkedList的遍歷與性能分析

    Java中ArrayList和LinkedList的遍歷與性能分析

    這篇文章主要給大家介紹了ArrayList和LinkedList這兩種list的五種循環(huán)遍歷方式,各種方式的性能測(cè)試對(duì)比,根據(jù)ArrayList和LinkedList的源碼實(shí)現(xiàn)分析性能結(jié)果,總結(jié)結(jié)論。相信對(duì)大家的理解和學(xué)習(xí)具有一定的參考價(jià)值,有需要的朋友們下面跟著小編一起來學(xué)習(xí)學(xué)習(xí)吧。
    2016-12-12
  • java并發(fā)包JUC同步器框架AQS框架原文翻譯

    java并發(fā)包JUC同步器框架AQS框架原文翻譯

    發(fā)現(xiàn)了一篇JDK作者的論文《The?java.util.concurrent?Synchronizer?Framework》主要描述了作者對(duì)AbstractQueuedSynchronizer同步器框架的設(shè)計(jì)和實(shí)現(xiàn)。權(quán)威性毋庸置疑!自然需要拜讀一下,配上中文翻譯,希望大家能有所收獲
    2022-02-02
  • Mybatis實(shí)現(xiàn)增刪改查

    Mybatis實(shí)現(xiàn)增刪改查

    這篇文章主要介紹了Mybatis實(shí)現(xiàn)增刪改查,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-01-01
  • 圖解Java經(jīng)典算法快速排序的原理與實(shí)現(xiàn)

    圖解Java經(jīng)典算法快速排序的原理與實(shí)現(xiàn)

    快速排序是基于二分的思想,對(duì)冒泡排序的一種改進(jìn)。主要思想是確立一個(gè)基數(shù),將小于基數(shù)的數(shù)放到基數(shù)左邊,大于基數(shù)的數(shù)字放到基數(shù)的右邊,然后在對(duì)這兩部分進(jìn)一步排序,從而實(shí)現(xiàn)對(duì)數(shù)組的排序
    2022-09-09
  • 關(guān)于Seata基本使用及二階提交流程

    關(guān)于Seata基本使用及二階提交流程

    這篇文章主要介紹了關(guān)于Seata基本使用及二階提交流程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-04-04

最新評(píng)論

峨山| 酉阳| 邵东县| 伊宁县| 钟祥市| 博白县| 偃师市| 科技| 社会| 新河县| 金坛市| 扶沟县| 九龙县| 德安县| 巨鹿县| 景德镇市| 疏附县| 健康| 合水县| 霞浦县| 三穗县| 石楼县| 潞西市| 驻马店市| 库尔勒市| 海城市| 昌吉市| 山丹县| 祁门县| 双桥区| 治多县| 灌云县| 蒲江县| 莒南县| 永川市| 宁夏| 城口县| 南漳县| 建始县| 修武县| 沾益县|