Skip to content

0915java拦截器的执行顺序&想明白代理模式,aop,责任链模式,中间件&拦截器的本质

ziyouzy edited this page Sep 15, 2020 · 1 revision

文章:

https://blog.csdn.net/pmdream/article/details/102523274

由此可知,如果存在拦1,拦2,拦3,则执行顺序为:拦1.pre()->拦2.pre()->拦3.pre()->拦1.post()->拦2.post()->拦3.post()->拦1.after()->拦2.after()->拦3.after()

拦截器是一种AOP的应用,底层是用的是Java反射机制来实现的

所谓的aop的应用,其实是aop思想的应用,在不破坏某个功能完善类方法的内部代码的前提下,对其功能进行拓展

其实想想,动态代理虽然实现起来十分复杂,但是也是为了实现这一aop思想

动态代理使用了java的反射机制实现

而现在我已经可以明确,gin框架的中间件也是一种AOP思想,和java的拦截器一样,通过各自语言实现了的责任链模式,进而实现了代理模式,也就是宏观上的AOP思想

责任连模式是方法,代理模式是结果,AOP思想是因为代理模式很牛逼,牛逼到了他属于某一种思想

就好比“基于类与对象”编程模式很牛逼,他是面向对象思想

===

另外,实现代理模式有很多技术以及思路,责任链模式只是其中之一,同时也算实现代理模式的千万中技术中,稍微复杂且先进的技术了,之前在初探golang实现静态代理模式是,记得也了解过很多简单的方法:

如用代理结构体组合被代理结构体,并重写其某个方法,在方法内部重写被代理结构体的某个方法,方法内部再去调用被代理结构体的同名方法,重点在于,在同名方法执行前或执行后,添加新的需求。

完成如上步骤后,实例化代理,而使用这个代理实体的方法和与使用其所代理的结构体的方式100%一致

Clone this wiki locally