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

spring boot基于注解的聲明式事務(wù)配置詳解

 更新時間:2021年08月09日 11:15:05   作者:Kalvin_csdn  
這篇文章主要介紹了spring boot基于注解的聲明式事務(wù)配置詳解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

事務(wù)配置

1、配置方式一

1)開啟spring事務(wù)管理,在spring boot啟動類添加注解@EnableTransactionManagement(proxyTargetClass = true);等同于xml配置方式的 <tx:annotation-driven />(注意:1項(xiàng)目中只需配置一次,2需要配置proxyTargetClass = true)

2)在項(xiàng)目中需要添加事務(wù)的類或方法上添加注解@Transactional(建議添加在方法上),一般使用默認(rèn)屬性即可,若要使用事務(wù)各屬性可查看spring事務(wù)官方文檔了解

2、配置方式二(指定事務(wù),需要多個事務(wù)管理器時用)

1)開啟事務(wù)管理:創(chuàng)建多個事務(wù),如下例子

@Configuration
@EnableTransactionManagement(proxyTargetClass = true)
public class TransactionConfig implements TransactionManagementConfigurer{
    @Value("${spring.datasource.driver-class-name}")
    private String driverClassName;
    @Value("${spring.datasource.druid.url}")
    private String url;
    @Value("${spring.datasource.druid.username}")
    private String username;
    @Value("${spring.datasource.druid.password}")
    private String password;
    @Bean
    public DataSource dataSourceDb() {
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setDriverClassName(driverClassName);
        dataSource.setUrl(url);
        dataSource.setUsername(username);
        dataSource.setPassword(password);
        return dataSource;
    }
    /**
     * 【作用】事務(wù)管理器<br>
     * 【說明】(無)
     * @param
     * @author Kalvin
     * @Date 2017/12/19 10:39
     */
    @Bean
    public PlatformTransactionManager transactionManager() {
        return new DataSourceTransactionManager(dataSourceDb());
    }
    // 創(chuàng)建事務(wù)管理器2
    @Bean(name = "txManager2")
    public PlatformTransactionManager txManager2(EntityManagerFactory factory) {
        return new JpaTransactionManager(factory);
    }
    /**
     * 【作用】如果沒有指定事務(wù),默認(rèn)返回當(dāng)前事務(wù)管理<br>
     * 【說明】(無)
     * @param
     * @author kkyc
     * @Date 2017/12/19 10:03
     */
    @Override
    public PlatformTransactionManager annotationDrivenTransactionManager() {
        return transactionManager();
    }
}

到這里已經(jīng)成功整合好事務(wù)配置了,你只需要在使用的地方添加注解@Transactional即可,如果需要限定事務(wù)管理器,可使用@Transactional(“txManager2”)

spring boot事務(wù)(注解模式)

使用注解模式不需要配置文件,也不需要配置事務(wù)配置類或者方法,只需要使用“@Transcation”注解引入到相對應(yīng)的位置即可實(shí)現(xiàn)事務(wù)回滾功能。

1.引入pom.xml

  <!-- 事物 -->
  <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-tx</artifactId>
     </dependency>

2.在controller里面使用事務(wù)注解

因?yàn)閟ervice和接口層都是直接操作數(shù)據(jù)庫的方法,一般需要多個操作或者循環(huán)的Controller才需要事務(wù)支持,如果是mybatis批量操作數(shù)據(jù)庫語句也不需要事務(wù)

事務(wù)作用域一般常見的分成兩種:

①定義在類上面 :所有的方法都支持事務(wù)

②定義在方法上 :只有該方法支持事務(wù)

package com.Transaction.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.Transaction.entity.Alarmtype;
import com.Transaction.mapper.AlarmtypeMapper;
import com.Transaction.service.AlarmtypeService;
@Controller
//@Transactional //事務(wù)級別,如果該類中同時操作多個方法,只要失敗則全部回滾
public class AlarmtypeController {
 @Autowired
 AlarmtypeMapper alarmtypeMapper;
 
 @Autowired
 AlarmtypeService alarmtypeService;
 
 @RequestMapping("index")
 public synchronized String index(){
  //List<Alarmtype> list = alarmtypeMapper.getAlarmtypeList();
  List<Alarmtype> list = alarmtypeService.findAll();
  for (int i = 0; i < list.size(); i++) {
   System.out.println(list.get(i).getId()+"--"+list.get(i).getAlarmname());
  }
  return "index";
 }
 
 //批量插入
 @RequestMapping("addBatch")
 @ResponseBody
 @Transactional//對整個方法進(jìn)行事務(wù)處理,方法體內(nèi)只要有一個方法沒執(zhí)行成功則全部回滾
 public synchronized int addBatch(){
  Alarmtype alarmtype = new Alarmtype();
  Alarmtype updatealarmtype = new Alarmtype();
  updatealarmtype.setId(1);
  updatealarmtype.setAlarmname("修改前輪故障");
  alarmtypeMapper.updateAlarmtypeById(updatealarmtype);
  int result = 0;
  try {
   for (int i = 0; i < 5; i++) {
    if(i==2){
     //alarmname在數(shù)據(jù)庫中長度不超過50,賦值超過50報異常 Data too long
     alarmtype.setAlarmname("測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試測試");
     alarmtype.setAlarmtypeid(i);
    }else{
     alarmtype.setAlarmname("測試"+i);
     alarmtype.setAlarmtypeid(i);
    }
    result = alarmtypeMapper.addAlarmtype(alarmtype);
   }
  }catch (Exception e) {
   e.printStackTrace();
  }
  return result;
 }
 
 @RequestMapping("test")
 @ResponseBody
 public synchronized String test(){  
  return "test";
 }
}

以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • java實(shí)現(xiàn)http請求工具類示例

    java實(shí)現(xiàn)http請求工具類示例

    這篇文章主要介紹了java實(shí)現(xiàn)http請求工具類示例,需要的朋友可以參考下
    2014-05-05
  • Java多線程案例之單例模式懶漢+餓漢+枚舉

    Java多線程案例之單例模式懶漢+餓漢+枚舉

    這篇文章主要介紹了Java多線程案例之單例模式懶漢+餓漢+枚舉,文章著重介紹在多線程的背景下簡單的實(shí)現(xiàn)單例模式,需要的小伙伴可以參考一下
    2022-06-06
  • Java實(shí)現(xiàn)俄羅斯方塊游戲簡單版

    Java實(shí)現(xiàn)俄羅斯方塊游戲簡單版

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)俄羅斯方塊游戲簡單版,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • Spring Security實(shí)現(xiàn)退出登錄和退出處理器

    Spring Security實(shí)現(xiàn)退出登錄和退出處理器

    本文主要介紹了Spring Security實(shí)現(xiàn)退出登錄和退出處理器,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • 使用阿里云OSS的服務(wù)端簽名后直傳功能的流程分析

    使用阿里云OSS的服務(wù)端簽名后直傳功能的流程分析

    這篇文章主要介紹了使用阿里云OSS的服務(wù)端簽名后直傳功能,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-09-09
  • MyBatisPlus3如何向數(shù)據(jù)庫中存入List

    MyBatisPlus3如何向數(shù)據(jù)庫中存入List

    本文主要介紹了Mybatis Plus的類型處理器的使用,通過User.java和UserMapper.xml示例進(jìn)行詳細(xì)的解析,并提供了JSON解析器的使用方法,希望通過這篇文章,可以幫助大家更好的理解和掌握Mybatis Plus的類型處理器
    2024-10-10
  • Java練習(xí)題之實(shí)現(xiàn)平方根(sqrt)函數(shù)

    Java練習(xí)題之實(shí)現(xiàn)平方根(sqrt)函數(shù)

    這篇文章主要介紹了Java練習(xí)題之實(shí)現(xiàn)平方根(sqrt)函數(shù)的相關(guān)資料,平方根是一個數(shù)學(xué)概念,表示一個數(shù)的正平方根,文中通過代碼和圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-07-07
  • 使用spring?jpa?如何給外鍵賦值

    使用spring?jpa?如何給外鍵賦值

    這篇文章主要介紹了使用spring?jpa?如何給外鍵賦值,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • 解決springdataJPA對原生sql支持的問題

    解決springdataJPA對原生sql支持的問題

    這篇文章主要介紹了解決springdataJPA對原生sql支持的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • Java中Minio的基本使用詳解

    Java中Minio的基本使用詳解

    這篇文章主要介紹了Java中Minio的基本使用詳解,MinIO 是一個基于Apache License v2.0開源協(xié)議的對象存儲服務(wù),它兼容亞馬遜S3云存儲服務(wù)接口,非常適合于存儲大容量非結(jié)構(gòu)化的數(shù)據(jù),例如圖片、視頻、日志文件、備份數(shù)據(jù)和容器/虛擬機(jī)鏡像等,需要的朋友可以參考下
    2024-01-01

最新評論

怀宁县| 米泉市| 新晃| 荥经县| 棋牌| 绵竹市| 徐闻县| 井研县| 崇义县| 双鸭山市| 鹤岗市| 志丹县| 云霄县| 普格县| 卢湾区| 广汉市| 兴和县| 临沭县| 深州市| 阳城县| 巢湖市| 嵩明县| 景洪市| 志丹县| 泾阳县| 夏河县| 皋兰县| 历史| 二连浩特市| 榆中县| 夏河县| 荣昌县| 荆州市| 锡林郭勒盟| 安多县| 乌兰县| 堆龙德庆县| 宝鸡市| 石门县| 土默特右旗| 房产|