国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

spring boot基于注解的聲明式事務配置詳解

瀏覽:2日期:2023-06-26 15:15:55
事務配置1、配置方式一

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

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

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

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

@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; } /** * 【作用】事務管理器<br> * 【說明】(無) * @param * @author Kalvin * @Date 2017/12/19 10:39 */ @Bean public PlatformTransactionManager transactionManager() {return new DataSourceTransactionManager(dataSourceDb()); } // 創(chuàng)建事務管理器2 @Bean(name = 'txManager2') public PlatformTransactionManager txManager2(EntityManagerFactory factory) {return new JpaTransactionManager(factory); } /** * 【作用】如果沒有指定事務,默認返回當前事務管理<br> * 【說明】(無) * @param * @author kkyc * @Date 2017/12/19 10:03 */ @Override public PlatformTransactionManager annotationDrivenTransactionManager() {return transactionManager(); }}

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

spring boot事務(注解模式)

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

1.引入pom.xml

<!-- 事物 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> </dependency>2.在controller里面使用事務注解

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

事務作用域一般常見的分成兩種:

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

②定義在方法上 :只有該方法支持事務

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 //事務級別,如果該類中同時操作多個方法,只要失敗則全部回滾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//對整個方法進行事務處理,方法體內只要有一個方法沒執(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'; }}

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Spring
相關文章:
主站蜘蛛池模板: 欧美日本色 | 一级特黄国产高清毛片97看片 | 禁止18周岁进入免费网站观看 | 久草视频精品在线 | 国产美女一区二区三区 | 国产一级毛片国语版 | 成年女人毛片免费播放人 | 精品国产三级 | 老湿菠萝蜜在线看 | 在线视频 一区二区 | 亚洲精品在线免费观看视频 | 久久久久久久亚洲精品一区 | 欧美一级情欲片在线 | 色偷偷亚洲女人天堂观看欧 | 国产成人精品亚洲一区 | 国产在视频线在精品 | 国产成人刺激视频在线观看 | 欧美日韩一区二区综合在线视频 | 亚洲第一视频在线播放 | 欧美在线一区二区三区 | 人成18亚洲资源在线 | 中文久草 | 手机看片日韩日韩韩 | 久久精品国产只有精品6 | 欧美激情性色生活片在线观看 | 日本三级精品 | 亚洲高清综合 | 久久中文字幕综合不卡一二区 | 中文字幕最新中文字幕中文字幕 | 韩国毛片 免费 | 96精品免费视频大全 | 国产精品99久久久 | bt天堂国产亚洲欧美在线 | 久久精品系列 | 亚洲视频在线a视频 | 欧美日韩一区二区三区在线视频 | 国产一区二区日韩欧美在线 | 久操视频免费在线观看 | 免费a级毛片无码 | 日韩在线一区二区三区 | 精品免费久久 |