Spring02——实现动态代理拦截器

作者: 大数据阶梯之路 | 来源:发表于2018-07-22 22:33 被阅读43次

实现动态代理的2种方式

第一种:  用JDK提供的Proxy代理类InvocationHandler调用处理类  配合起来可以拦截一个接口下面的实现类,拦截它的方法,这样可以在它之前做点事情之后做点事情都可以。不过使用JDK这种方式必须实现接口才可以。优势:使用反射创建对象,创建效率高。

面向接口编程    spring里默认用jdk方式。为啥?都有接口,面向接口编程的。下面来实现一个小练习实践理解

①自定义一个接口

②写一个接口实现类

③写一个拦截

④主函数调用

第二种: 用cglib第三方库,它是用asm   这是搞class字节码的,这种方式基于子类的,基于继承,如果类没有接口就可以用这种方式。优势:执行效率高

①创建一个练习类

②创建一个代理类

③主函数调用

运行效果:

上面例子举得不是很好,一般在拦截到类和方法后可以干点拦截前拦截后的事情,再举个例子,比如io流操作拦截到后要close掉,可有时为了效率好则希望把它放入连接池里,下次需要再调用,但是一close掉就销毁了,所以可以在拦截到后再拦截前就把它放入连接池,这次就算close掉也已经放入连接池里下次可以直接拿来用了。

相关文章

  • JDK和CGLIB动态代理区别

    JDK和CGLIB动态代理区别 一 JDK和CGLIB动态代理原理1、JDK动态代理利用拦截器(拦截器必须实现In...

  • Spring02——实现动态代理拦截器

    实现动态代理的2种方式 第一种: 用JDK提供的Proxy代理类 和 InvocationHandler调用处理类...

  • 4.JDK动态代理和CGlib代理

    JDK动态代理: 利用拦截器(拦截器必须实现InvocationHanlder)加上反射机制生成一个实现代理接口的...

  • 设计模式~代理模式

    学习代理模式内容: ★ 静态代理、 ★ 动态代理(JDK动态代理、CGLIB动态代理)、 ★ 拦截器的原理和日志记...

  • 带你了解Mybatis拦截器及手写分页插件

    Mybatis的拦截器原理还有点绕,也还算简单,原理就是通过JDK的动态代理技术来为我们自定义的拦截器类实现代理,...

  • 代理模式

    代理模式的作用:AOP、拦截器、解耦 ... 1. 静态代理: 2. 动态代理: 3. 自己手写动态代理: 结构结...

  • MyBatis使用拦截器实现分页功能

    mybatis的拦截器实现分页(动态代理) 拦截sql语句来实现分页1.拦截什么样的对象(以page作为参数传入;...

  • Spring MVC拦截器

    SpringMvc的拦截器和过滤器的区别 1.拦截器是使用JDK动态代理实现的,拦截的是对应调用方法的拦截2.过滤...

  • 动态代理(二)

    动态代理的原理 我们可以看到动态代理是根据反射实现的,那么我们可以自己实现动态代理吗? 1、每个动态代理的类都实现...

  • MyBatis插件的使用及其原理

    插件介绍插件本质上是拦截器,实现原理是动态代理,多个拦截还涉及到责任链设计模式。ParameterHandler:...

网友评论

    本文标题:Spring02——实现动态代理拦截器

    本文链接:https://www.haomeiwen.com/subject/gfihmftx.html