当前位置: 首页 > news >正文

做体育的网站c2c跨境电商平台有哪些?

做体育的网站,c2c跨境电商平台有哪些?,wordpress注入,网站筹建中案例 接下来我们就通过一个案例来演示下事务传播行为propagation属性的使用。 需求#xff1a;解散部门时需要记录操作日志 由于解散部门是一个非常重要而且非常危险的操作#xff0c;所以在业务当中要求每一次执行解散部门的操作都需要留下痕迹#xff0c;就是要记录操作…案例 接下来我们就通过一个案例来演示下事务传播行为propagation属性的使用。 需求解散部门时需要记录操作日志 由于解散部门是一个非常重要而且非常危险的操作所以在业务当中要求每一次执行解散部门的操作都需要留下痕迹就是要记录操作日志。而且还要求无论是执行成功了还是执行失败了都需要留下痕迹。 步骤 执行解散部门的业务先删除部门再删除部门下的员工前面已实现 记录解散部门的日志到日志表未实现 准备工作 创建数据库表 dept_log 日志表 create table dept_log(id int auto_increment comment 主键ID primary key,create_time datetime null comment 操作时间,description varchar(300) null comment 操作描述 )comment 部门操作日志表; 引入资料中提供的实体类DeptLog Data NoArgsConstructor AllArgsConstructor public class DeptLog {private Integer id;private LocalDateTime createTime;private String description; } 引入资料中提供的Mapper接口DeptLogMapper Mapper public interface DeptLogMapper { ​Insert(insert into dept_log(create_time,description) values(#{createTime},#{description}))void insert(DeptLog log); ​ } 引入资料中提供的业务接口DeptLogService public interface DeptLogService {void insert(DeptLog deptLog); } 引入资料中提供的业务实现类DeptLogServiceImpl Service public class DeptLogServiceImpl implements DeptLogService { ​Autowiredprivate DeptLogMapper deptLogMapper; ​Transactional //事务传播行为有事务就加入、没有事务就新建事务Overridepublic void insert(DeptLog deptLog) {deptLogMapper.insert(deptLog);} } ​ 代码实现: 业务实现类DeptServiceImpl Slf4j Service //Transactional //当前业务实现类中的所有的方法都添加了spring事务管理机制 public class DeptServiceImpl implements DeptService {Autowiredprivate DeptMapper deptMapper;Autowiredprivate EmpMapper empMapper; ​Autowiredprivate DeptLogService deptLogService; ​ ​//根据部门id删除部门信息及部门下的所有员工OverrideLogTransactional(rollbackFor Exception.class) public void delete(Integer id) throws Exception {try {//根据部门id删除部门信息deptMapper.deleteById(id);//模拟异常if(true){throw new Exception(出现异常了~~~);}//删除部门下的所有员工信息empMapper.deleteByDeptId(id);}finally {//不论是否有异常最终都要执行的代码记录日志DeptLog deptLog new DeptLog();deptLog.setCreateTime(LocalDateTime.now());deptLog.setDescription(执行了解散部门的操作此时解散的是id号部门);//调用其他业务类中的方法deptLogService.insert(deptLog);}}//省略其他代码... } 测试: 重新启动SpringBoot服务测试删除3号部门后会发生什么 执行了删除3号部门操作 执行了插入部门日志操作 程序发生Exception异常 执行事务回滚删除、插入操作因为在一个事务范围内两个操作都会被回滚 然后在dept_log表中没有记录日志数据 原因分析: 接下来我们就需要来分析一下具体是什么原因导致的日志没有成功的记录。 在执行delete操作时开启了一个事务 当执行insert操作时insert设置的事务传播行是默认值REQUIRED表示有事务就加入没有则新建事务 此时delete和insert操作使用了同一个事务同一个事务中的多个操作要么同时成功要么同时失败所以当异常发生时进行事务回滚就会回滚delete和insert操作 解决方案 在DeptLogServiceImpl类中insert方法上添加Transactional(propagation Propagation.REQUIRES_NEW) Propagation.REQUIRES_NEW 不论是否有事务都创建新事务 运行在一个独立的事务中。 Service public class DeptLogServiceImpl implements DeptLogService { ​Autowiredprivate DeptLogMapper deptLogMapper; ​Transactional(propagation Propagation.REQUIRES_NEW)//事务传播行为不论是否有事务都新建事务Overridepublic void insert(DeptLog deptLog) {deptLogMapper.insert(deptLog);} } 重启SpringBoot服务再次测试删除3号部门 那此时DeptServiceImpl中的delete方法运行时会开启一个事务。 当调用 deptLogService.insert(deptLog) 时也会创建一个新的事务那此时当insert方法运行完毕之后事务就已经提交了。 即使外部的事务出现异常内部已经提交的事务也不会回滚了因为是两个独立的事务。 到此事务传播行为已演示完成事务的传播行为我们只需要掌握两个REQUIRED、REQUIRES_NEW。 REQUIRED 大部分情况下都是用该传播行为即可。 REQUIRES_NEW 当我们不希望事务之间相互影响时可以使用该传播行为。比如下订单前需要记录日志不论订单保存成功与否都需要保证日志记录能够记录成功。
http://www.zqtcl.cn/news/629825/

相关文章:

  • 山西响应式网站建设推荐全国企业信用信息公示系统浙江
  • 西安做网站维护的公司百度百科官网入口
  • 网站网站建设公司贵阳网站设计阳光创信好吗
  • 网站广告投放收费标准长沙公司制作网站费用
  • 网站建设有哪些环节做一个产品网站要多少钱
  • 公司网站建设价格河北网站制作 网站开发
  • 适合新手做的网站项目职业技术培训
  • 提高网站流量原则昆山做百度网站
  • 怎样设计自己的网站长春制作门户网站的公司
  • 亚马逊商标备案是否必须做网站Wordpress做APP后端
  • 主办单位性质与网站名称不符网站域名怎么买
  • 帝国cms下载类网站怎么做广州外贸营销网站建设公司
  • 网站开发软件开发流程免费做外贸的网站平台有哪些
  • 教育培训网站开发广告公司怎么设置网站关键字
  • 绩溪建设银行网站济南网站建设 刘彬彬
  • 网站开发是打代码吗建网站来做什么
  • 制作网站需要什么软件wordpress建站程序
  • 做网站网站怎么赚钱软件工程师证书报考时间
  • 手机和电脑网站分开做炒股软件下载
  • 网站建设需要注意哪些关键细节杭州做商务网站
  • 做网站,图片显示不出来网站图标代码
  • 理财网网站开发源码h5淘宝网网页版入口
  • 免费网站商城模板宁波企业网站搭建图片
  • 上海网站备案查询建站图标素材
  • 贵州省住房和建设厅网网站网站页面设计报告
  • 做网站友汇网快速建设网站视频教程
  • 物流公司做网站注重什么官网的网站设计公司
  • 网站备案 2016电子商务平台起名
  • 济南建站详情房地产市场分析
  • 南宁品牌网站建设公司中国商业企业网