我在这边问一下大家,你们说一下,我们现在想怎么样呢,这个时候大家记住一点,我们进入到正题,我们手写Spring的事务注解,在这边写一下,手写Spring的事务注解,既然手写的情况下,在这边我们假设,记住不是Spring里面的,是我们自己定义的,定义一个事务注解叫做什么,@ExtTransanction表示我们自定义出来的,待会只要加上我们自己定义的注解之后,他就能实现Spring自带的@Transaction一样功能,这个时候我们问一下大家,你们说一下思路是怎样的,你们要知道思路,写一个项目要有思路的,你们想想怎么做,环绕通知是吧,我们写一个步骤,你们想想第一步干嘛,是不是要定义一个注解,第二步干嘛,是不是要封装手动事务,这个我们昨天已经封装好了,这一步我们已经不用做了,到第三步的时候,我怎么知道这个方法中有没有加注解,然后我怎么处理呢,第三步就难了,扫包怎么扫包呢,你们想想,具体如何扫包,这个比较难啊,我怎么知道这个注解就有这个权限功能呢,比如这个时候想的比较好,com.learn.service,现在只要在com.learn.service这下面,加上@ExtTransaction注解之后,那么会怎么样呢,我们注解自动就会有效,那么具体如何扫包,这就是个难题,怎么做,代理设计模式,利用AOP就可以,具体步骤怎么样呢,这个是比较难的,具体如何扫包,首先定义一个事务的AOP,定义这个AOP的时候,这就是关键,如果我们想定义一个事务扫包的AOP,既然定义了AOP扫包之后,AOP就可以具体定义扫描哪些方法,那么到了第四步的时候,怎么做呢,拦截方法的时候,使用反射技术判断该方法上是否有事务注解,如果有的话,就开启事务,没有的话,就不开启事务,这个思路里不理解,什么意思,我们待会写个AOP出来,设置我们的权限,事务注解权限,在哪些范围,就可以具体定位拦截到哪些方法,我们通过AOP拦截到这些方法之后,然后通过反射技术判断该方法上是否有事务注解,如果有的话,就开启事务,如果没有的话就不开启事务,是不是这样的,这个思路明不明白,听明白了吗,我们昨天定义了一个注解,传入切入点的时候发现没有,可以获取到一个方法的,我们还是在这边做,我们是写框架的,不是写基本的代码,那在这边我再重复一下这个思路,第一步我们肯定要定义一下这个注解出来,事务注解,第二个干嘛呢,相当于手动封转一个事务,昨天已经讲了,然后第三步具体如何扫包,我们定义一个事务的扫包AOP,具体定义拦截到哪些方法,拦截某些方法的时候,使用反射技术判断一下,方法上是否有事务注解,如果有事务注解的话就开始事务,没有的话就不开启事务,没有什么难的,就这个思路,你们再看源码,源码也是这样实现出来的,他写的可能比我还复杂,他用了很多设计模式的,你们如果实在觉得有点绕的情况下,这个确实是很底层

手写自定义注解实现思路相关推荐

  1. 手写 springIoc 注解版 ,实现@Service (beng),@Resource (依赖注入)

    手写springIoc 注解版 代码demo https://pan.baidu.com/s/1jyvLMDrg_bfpKmhtrTTZSQ 提取码:5ju1 代码目录结构 1.pom.xml < ...

  2. uniapp手写自定义弹窗

    uniapp手写自定义弹窗 弹窗这种东西真的是太常见了常见到烂大街 但是每个平台的弹窗都不太一样 样式不统一就不怎么好看 像把代码编译到安卓端 然后就- 哎不说了 安卓离苹果的距离还是很远的 这里只限 ...

  3. 手写springioc注解注入对象基本实现

    还是要养成写注释的习惯,首先一个代码想让人家看懂的情况下,记住一点,重构加设计模式,其实设计模式也比较好,达到别人可易读性,这是我要跟你讲的,而且你们不写注释是一个不好的习惯,你们一定要养成我善于重构 ...

  4. C语言手写自定义三维数组

    C语言手写三维数组 本文目的是通过C语言的结构体和动态数组,实现自定义类型的三维数组TripleArray及其基本运算 本文目的是通过C语言的结构体和动态数组,实现自定义类型的三维数组TripleAr ...

  5. android canvas 手写,自定义view—Canvas实现手写板和涂鸦功能

    学习导航 第一节:http://blog..net/bobo8945510/article/details/53197727 -自定义View-自定义属性及引用 第二节:http://blog..ne ...

  6. 手写一个@MapperScan扫描器

    @MapperScan 1.@MapperScan这个注解是由MyBatis提供的: 2.只能使用在类上: 3.主要功能是扫描到指定包下接口的生成Class对象 注解使用在类上,指定value的值可以 ...

  7. iOS--MVC、自定义大小可变的view(纯手写)

    采用MVC自定义一个view,效果: 思路: 采用MVC,第一步确定model.很明显这个view的model应该由image.string.string组成.model如下: dataModel: ...

  8. 自定义注解-aop实现日志记录

    关于注解,平时接触的可不少,像是 @Controller.@Service.@Autowried 等等,不知道你是否有过这种疑惑,使用 @Service 注解的类成为我们的业务类,使用 @Contro ...

  9. 利用自定义注解实现权限验证

    思路: 根据自定义注解,给对应权限能够查看到的资源的Controller方法上添加注解(也就是一个权限字符串),权限字符串跟方法是一对多的关系,同一个权限字符串可以添加到多个方法上:当用户有对应的权限 ...

最新文章

  1. java面试题2016_2016最新java面试题 详细版
  2. Java里边什么是值传递和引用传递?两个有什么区别
  3. 一个Java程序猿眼中的前后端分离以及Vue.js入门
  4. C语言string.h文件函数汇总详解
  5. 集字卡v4.3.4微信公众号原版三种UI+关键字卡控制+支持强制关注
  6. LINE:不得不看的大规模信息网络嵌入
  7. linux generic什么意思_Linux下ps aux中进程状态为Ss,S+, Rs,Ds是什么意思?
  8. Qt Creator 添加自定义注释
  9. python篇第10天【While 循环语句】
  10. 快速计算子网掩码和主机块
  11. Java开发笔记(一百三十七)JavaFX的标签
  12. BD NetDisk不限速下载,某度网盘不限速下载,跑满带宽,网盘下载器,网盘高速下载器,不限速网盘下载,AntNetDiskDownloader
  13. 写好一份数据分析报告需要注意的13个要点
  14. 2021-07-16 转载 - UmiJS应用框架
  15. C#开发测量程序-计算坐标方位角
  16. echarts 全国各省市地图切换展示
  17. 抖音蓝V号如何在企业首页添加联系方式?解读详细的设置流程
  18. TensorFlow 线性代数编译框架 XLA
  19. 室内定位——视觉方法的发展
  20. Event loop/浏览器的事件循环机制

热门文章

  1. [00004]-[2015-07-16]-[00]-[VC++ 开发Activity控件基础]
  2. 同一个页面同时拥有collectionView和navigationBar和tabBar时可能遇到的问题
  3. 判断线段相交(hdu1558 Segment set 线段相交+并查集)
  4. .NET 指南:实现 Equals 方法
  5. 自定义类型处理器的应用
  6. 重写AgileEAS.NET SOA 中间件平台账号密码的加密算法
  7. 随笔   面试题网站
  8. debian 下修改boot停留时间
  9. C#中的三种委托方式:Func委托,Action委托,Predicate委托
  10. jQuery到底有什么好?