拿房屋买卖举例,流程:销售房屋 -- 接待员 -- 销售员 -- 财务

售楼处

存放着所有待售和已售的房屋数据(数据源 datasource)

总经理

带领一套自己的班底,下属员工都听自己的,服务于售楼处(jpa框架,mybatis或jdbctemplate...不同的jpa框架都实现了jpa规范)

《客户接待成交守则》

①任何接待员可以接待任何客户,一位客户只能被一位销售员服务,除非销售员离职或放弃该客户,服务于售楼处(事务,被事务包裹的数据操作具有原子性、一致性、隔离性、持久性,为数据操作提供业务保证)

②客户夫妻俩之前没联系,同时被两个销售员服务,这时如何操作?(Spring事务的传播属性,默认PROPAGATION_REQUIRED)

③如果一个新销售员实在搞不定一个客户,那是不是可以考虑让一个老销售员来协助他促成这笔单子呢?(spring数据库隔离级别, MySQL InnoDB默认Repeatable-Read,隔离级别值为2,避免脏读,不可重复读,允许幻读)

具体参阅:https://www.cnblogs.com/fjdingsd/p/5632949.html

《销售客户对应名单》

哪个客户属于哪个销售的数据名单,只要在该名单里能找到要查的客户记录,那么他的销售就受《客户接待成交守则》 规范(方法或类上标记了@Transactional,那么spring启动的时候就会扫描到他们,并且给他们加上事务操作,这是spring的声明式事务)

《销售员售楼培训手册》

客户每次来售楼处,要先问客户是不是首次到店,首次到店给他联系销售员,非首次到店给他联系自己的销售顾问,即使双方都谈妥了,如果客户的贷款申请不下来,那这个单子也成交不了,还要把客户的定金退还给他。如果都正常就走财务结款成交。销售员要时刻铭记这些要求。(spring的事务aop,定义了何时开启事务,何时回滚事务,何时提交事务。)

具体spring的事务实现原理实现细节参阅:

spring事务管理器的源码和理解

Spring 事务管理原理探究

Spring @Transactional工作原理

通俗的讲法理解spring的事务实现原理的更多相关文章

  1. 理解spring对事务的处理:传播性

    所谓事务传播行为就是多个事务方法相互调用时,事务如何在这些方法间传播.Spring 支持 7 种事务传播行为: PROPAGATION_REQUIRED 如果当前没有事务,就新建一个事务,如果已经存在 ...

  2. Spring的事务实现原理

    主流程 Spring的事务采用AOP的方式实现. @Transactional 注解的属性信息 name                当在配置文件中有多个 TransactionManager , ...

  3. Spring系列.事务管理原理简析

    Spring的事务管理功能能让我们非常简单地进行事务管理.只需要进行简单的两步配置即可: step1:开启事务管理功能 @Configuration //@EnableTransactionManag ...

  4. 深入理解spring中的AOP原理 —— 实现MethodInterceptor接口,自已动手写一个AOP

      1.前言 AOP是面向切面编程,即“Aspect Oriented Programming”的缩写.面对切面,就是面向我们的关注面,不能让非关注面影响到我们的关注面.而现实中非关切面又必不可少,例 ...

  5. 深入理解Spring Security授权机制原理

    原创/朱季谦 在Spring Security权限框架里,若要对后端http接口实现权限授权控制,有两种实现方式. 一.一种是基于注解方法级的鉴权,其中,注解方式又有@Secured和@PreAuth ...

  6. 理解Spring:AOP的原理及手动实现

    引入 到目前为止,我们已经完成了简易的IOC和DI的功能,虽然相比如Spring来说肯定是非常简陋的,但是毕竟我们是为了理解原理的,也没必要一定要做一个和Spring一样的东西.到了现在并不能让我们松 ...

  7. 从源码中理解Spring Boot自动装配原理

    个人博客:槿苏的知识铺 一.什么是自动装配 SpringBoot 定义了一套接口规范,这套规范规定:SpringBoot在启动时会扫描外部引用jar包中的META-INF/spring.factori ...

  8. 理解Spring:IOC的原理及手动实现

    Spring是一个分层的JavaSE/EE full-stack(一站式) 轻量级开源框架.也是几乎所有Java工作者必须要掌握的框架之一,其优秀的设计思想以及其代码实现上的艺术也是我们需要掌握的. ...

  9. 深入理解 Spring 事务原理

    本文由码农网 – 吴极心原创,转载请看清文末的转载要求,欢迎参与我们的付费投稿计划! 一.事务的基本原理 Spring事务的本质其实就是数据库对事务的支持,没有数据库的事务支持,spring是无法提供 ...

随机推荐

  1. App热补丁动态修复技术介绍

    安卓App热补丁动态修复技术介绍 来自qq空间团队:微信号qzonemobiledev QQ空间终端开发团队 1.背景 当一个App发布之后,突然发现了一个严重bug需要进行紧急修复,这时候公司各方就 ...

  2. android 如何添加第3方lib库到kernel中

    注意:只能将lib库放在kernel编译到的地方,如下: alps/kernel/ alps/mediatek/custom/common/kernel/ alps/mediatek/custom/$ ...

  3. linux - 目录、文件默认属性: umask使用

    一 权限掩码umask umask是chmod配套的,总共为4位(gid/uid,属主,组权,其它用户的权限),不过通常用到的是后3个,例如你用chmod 755 file(此时这文件的权限是属主读( ...

  4. Android ROM开发(一)——Windows下Cygwin和Android_Kitchen厨房的安装

    Android ROM开发(一)--Windows下Cygwin和Android_Kitchen厨房的安装 很久没有碰到ROM开发了,在很久很久以前也是从ROM起步的,无奈还是一脚踏上了Android ...

  5. PS 滤镜算法原理——浮雕效果

    clc; clear all; Image=imread('4.jpg');Image=double(Image);p=3;  %% 控制浮雕的强度 %% 控制浮雕的方向 H=[0 0 p      ...

  6. objective-c 2.0的字面量Literals

    obj-c 2.0增加了许多核心对象字面量的简单语法,向ruby学习吗? 直接上代码: #import <Foundation/Foundation.h> int main(void){ ...

  7. javascript语言扩展:可迭代对象(5)

    文章1-4篇说的都是js中的可迭代对象,下面让我们看看ruby中的等价物. 不可否认,ruby中对于迭代器和生成器的语法都相当简洁:ruby从一开始就有一个简洁的基因,而js后来的不断扩充使得其有些语 ...

  8. 远离压力,提高效率——Getting things done读书笔记

    一.确定时间.空间和工具   二.收集阶段:填充工作篮         1. 这有助于你认识到自己面对的工用量.         2. 同时让你清楚"隧道的终点"在哪        ...

  9. Visual Studio 2013创建自定义多项目模版

    首先附上效果图: 可以看到输入解决方案名称后,自动创建了我事先写好的架构,并且项目名及Server层名称都变了,并且依然保持了引用关系. 下面讲具体步骤: 第一步:建立解决方案,并将需要的代码全部写好 ...

  10. C#解析json的几种方式

    json格式的数据是javascript原生的一种数据格式,比xml更简洁. 它有两种形式:json对象和json对象数组. 在此之前,有必要解释几个基本概念: json字符串,就是string,它一 ...