手写自定义注解实现思路

我在这边问一下大家,你们说一下,我们现在想怎么样呢,这个时候大家记住一点,我们进入到正题,我们手写Spring的事务注解,

在这边写一下,手写Spring的事务注解,既然手写的情况下,在这边我们假设,记住不是Spring里面的,是我们自己定义的,

定义一个事务注解叫做什么,@ExtTransanction表示我们自定义出来的,待会只要加上我们自己定义的注解之后,他就能实现

Spring自带的@Transaction一样功能,这个时候我们问一下大家,你们说一下思路是怎样的,你们要知道思路,写一个项目要有

思路的,你们想想怎么做,环绕通知是吧,我们写一个步骤,你们想想第一步干嘛,是不是要定义一个注解,第二步干嘛,是不是要

封装手动事务,这个我们昨天已经封装好了,这一步我们已经不用做了,到第三步的时候,我怎么知道这个方法中有没有加注解,

然后我怎么处理呢,第三步就难了,扫包怎么扫包呢,你们想想,具体如何扫包,这个比较难啊,我怎么知道这个注解就有这个权限功能呢,

比如这个时候想的比较好,com.learn.service,现在只要在com.learn.service这下面,加上@ExtTransaction注解之后,

那么会怎么样呢,我们注解自动就会有效,那么具体如何扫包,这就是个难题,怎么做,代理设计模式,利用AOP就可以,

具体步骤怎么样呢,这个是比较难的,具体如何扫包,首先定义一个事务的AOP,定义这个AOP的时候,这就是关键,

如果我们想定义一个事务扫包的AOP,既然定义了AOP扫包之后,AOP就可以具体定义扫描哪些方法,那么到了第四步的时候,

怎么做呢,拦截方法的时候,使用反射技术判断该方法上是否有事务注解,

如果有的话,就开启事务,没有的话,就不开启事务,这个思路里不理解,什么意思,我们待会写个AOP出来,设置我们的权限,事务注解权限,

在哪些范围,就可以具体定位拦截到哪些方法,我们通过AOP拦截到这些方法之后,然后通过反射技术判断该方法上是否有事务注解,

如果有的话,就开启事务,如果没有的话就不开启事务,是不是这样的,这个思路明不明白,听明白了吗,我们昨天定义了一个注解,

传入切入点的时候发现没有,可以获取到一个方法的,我们还是在这边做,我们是写框架的,不是写基本的代码,那在这边我再重复一下

这个思路,第一步我们肯定要定义一下这个注解出来,事务注解,第二个干嘛呢,相当于手动封转一个事务,昨天已经讲了,然后第三步具体

如何扫包,我们定义一个事务的扫包AOP,具体定义拦截到哪些方法,拦截某些方法的时候,使用反射技术判断一下,方法上是否有事务

注解,如果有事务注解的话就开始事务,没有的话就不开启事务,没有什么难的,就这个思路,你们再看源码,源码也是这样实现出来的,

他写的可能比我还复杂,他用了很多设计模式的,你们如果实在觉得有点绕的情况下,这个确实是很底层

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值