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

简介: 实现动态代理的2种方式第一种:  用JDK提供的Proxy代理类 和 InvocationHandler调用处理类  配合起来可以拦截一个接口下面的实现类,拦截它的方法,这样可以在它之前做点事情之后做点事情都可以。

实现动态代理的2种方式

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

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

①自定义一个接口

img_2648bcda27bed3d42c391540c68d082d.png

②写一个接口实现类

img_2f236d452544c044f2f05af065d5b06a.png

③写一个拦截

img_69e0028a1fe3863611b37ccb63db811d.png

④主函数调用

img_14346f77047c3cf23f574bba08127767.png

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

①创建一个练习类

img_9aada11b663a859b52e79a0add00f4e2.png

②创建一个代理类

img_2c9cf0ffae77b37255302dbd1dcbf87d.png

③主函数调用

img_5b14dd7917dfe6f310426c87b281888d.png

运行效果:

img_d27f2995116dbc246b5c3af70c695172.png

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

相关文章
|
2月前
|
监控 Java 开发者
Spring AOP动态代理
Spring AOP动态代理
48 1
|
4月前
|
Java Spring
Spring 源码阅读 72:基于 CGLIB 的 AOP 代理的原理(2)- 拦截器的查找与执行
【1月更文挑战第7天】本文分析了基于 CGLIB 的 AOP 代理如何查找和执行拦截器链,其主要的逻辑在 DynamicAdvisedInterceptor 的intercept方法执行。
35 1
|
4月前
|
缓存 Java Spring
Spring 源码阅读 66:基于 JDK 的 AOP 代理如何获取拦截器链(4)- 将 Advice 封装为拦截器
【1月更文挑战第1天】本文分析了 Advice 被封装成 MethodInterceptor 的过程,Spring AOP 用到的五种 Advice 中,有些本身就是 MethodInterceptor 的实现类,而有些需要通过适配器的封装。
44 0
|
19天前
|
前端开发 Java Spring
[AIGC] Spring Interceptor 拦截器详解
[AIGC] Spring Interceptor 拦截器详解
|
1月前
|
监控 Java 数据库连接
Spring高手之路17——动态代理的艺术与实践
本文深入分析了JDK和CGLIB两种动态代理技术在Spring框架中的应用。讨论了动态代理的基础概念,通过实例展示了如何实现和应用这两种方法,并比较了它们的性能差异及适用场景。进一步,探讨了在动态代理中实现熔断限流和日志监控的策略,以及如何利用动态代理优化Spring应用的设计和功能。
42 6
Spring高手之路17——动态代理的艺术与实践
|
1月前
|
Java 数据库 Spring
切面编程的艺术:Spring动态代理解析与实战
切面编程的艺术:Spring动态代理解析与实战
29 0
切面编程的艺术:Spring动态代理解析与实战
|
2月前
|
缓存 前端开发 Java
【Spring底层原理高级进阶】轻松掌握 Spring MVC 的拦截器机制:深入理解 HandlerInterceptor 接口和其实现类的用法
【Spring底层原理高级进阶】轻松掌握 Spring MVC 的拦截器机制:深入理解 HandlerInterceptor 接口和其实现类的用法
|
3月前
|
XML Java 数据格式
浅谈基于动态代理的Spring AOP原理
浅谈基于动态代理的Spring AOP原理
26 0
|
3月前
|
设计模式 安全 Java
深入理解Spring Boot AOP:CGLIB代理与JDK动态代理的完全指南
深入理解Spring Boot AOP:CGLIB代理与JDK动态代理的完全指南
387 1
|
3月前
spring-state-machine拦截器
spring-state-machine拦截器
26 0