欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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項目中只需配置一次,2需要配置proxyTargetClass = true)

2)在項目中需要添加事務(wù)的類或方法上添加注解@Transactional(建議添加在方法上),一般使用默認屬性即可,若要使用事務(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ù),默認返回當前事務(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”注解引入到相對應的位置即可實現(xiàn)事務(wù)回滾功能。

1.引入pom.xml

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

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

因為service和接口層都是直接操作數(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//對整個方法進行事務(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)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 詳解Feign的實現(xiàn)原理

    詳解Feign的實現(xiàn)原理

    Feign是Netflix開發(fā)的聲明式、模板化的HTTP客戶端, Feign可以幫助我們更快捷、優(yōu)雅地調(diào)用HTTP API
    2021-06-06
  • Java8時間接口LocalDateTime詳細用法

    Java8時間接口LocalDateTime詳細用法

    最近看別人項目源碼,發(fā)現(xiàn)Java8新的日期時間API很方便強大,所以整理了這篇文章,文中有非常詳細的代碼示例,對正在學習java的小伙伴們有很好的幫助,需要的朋友可以參考下
    2021-05-05
  • SpringBoot中的@ResponseStatus注解處理異常狀態(tài)碼

    SpringBoot中的@ResponseStatus注解處理異常狀態(tài)碼

    這篇文章主要介紹了SpringBoot中的@ResponseStatus注解處理異常狀態(tài)碼,在?SpringBoot?應用程序中,異常處理是一個非常重要的話題。當應用程序出現(xiàn)異常時,我們需要對異常進行處理,以保證應用程序的穩(wěn)定性和可靠性,需要的朋友可以參考下
    2023-08-08
  • Java實現(xiàn)代碼塊耗時測算工具類

    Java實現(xiàn)代碼塊耗時測算工具類

    這篇文章主要為大家介紹了如何利用Java語言編寫一個工具類,用來測算代碼塊的耗時,同時還能顯示進度,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-05-05
  • 詳解Java中的延時隊列 DelayQueue

    詳解Java中的延時隊列 DelayQueue

    這篇文章主要介紹了Java中延時隊列 DelayQueue的相關(guān)資料,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下
    2020-12-12
  • 如何簡單使用mybatis注解

    如何簡單使用mybatis注解

    之前我們介紹了使用JDBC或者java框架mabatis來實現(xiàn)對數(shù)據(jù)庫的操作,現(xiàn)在為了簡化代碼,提高程序的簡潔性,我們探索如何使用注解進行開發(fā),需要的朋友可以參考下
    2021-06-06
  • SocketIo+SpringMvc實現(xiàn)文件的上傳下載功能

    SocketIo+SpringMvc實現(xiàn)文件的上傳下載功能

    這篇文章主要介紹了SocketIo+SpringMvc實現(xiàn)文件的上傳下載功能,socketIo不僅可以用來做聊天工具,也可以實現(xiàn)局域網(wǎng)。文中給出了實現(xiàn)代碼,需要的朋友可以參考下
    2018-08-08
  • IDEA 項目創(chuàng)建Mapper的xml文件的方法

    IDEA 項目創(chuàng)建Mapper的xml文件的方法

    這篇文章主要介紹了IDEA 項目創(chuàng)建Mapper的xml文件的方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11
  • Spring中@Async注解執(zhí)行異步任務(wù)的方法

    Spring中@Async注解執(zhí)行異步任務(wù)的方法

    在業(yè)務(wù)處理中,有些業(yè)務(wù)使用異步的方式更為合理,這篇文章主要介紹了Spring中@Async注解執(zhí)行異步任務(wù)的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-06-06
  • Spring Boot中slf4j日志依賴關(guān)系示例詳解

    Spring Boot中slf4j日志依賴關(guān)系示例詳解

    在項目開發(fā)中,記錄日志是必做的一件事情。而當我們使用Springboot框架時,記錄日志就變得極其簡單了。下面這篇文章主要給大家介紹了關(guān)于Spring Boot中slf4j日志依賴關(guān)系的相關(guān)資料,需要的朋友可以參考下
    2018-11-11

最新評論