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掉也已经放入连接池里下次可以直接拿来用了。

相关文章
|
6月前
|
监控 Java 开发者
Spring AOP动态代理
Spring AOP动态代理
103 1
|
6月前
|
运维 Java 程序员
Spring5深入浅出篇:Spring动态代理详解
# Spring动态代理详解 本文探讨了Spring中的MethodBeforeAdvice和MethodInterceptor在动态代理中的应用和差异。MethodBeforeAdvice在方法执行前执行额外功能,而MethodInterceptor则可在方法执行前后或抛出异常时运行额外逻辑。MethodInterceptor还能影响原始方法的返回值。
|
3月前
|
Java
Spring5入门到实战------9、AOP基本概念、底层原理、JDK动态代理实现
这篇文章是Spring5框架的实战教程,深入讲解了AOP的基本概念、如何利用动态代理实现AOP,特别是通过JDK动态代理机制在不修改源代码的情况下为业务逻辑添加新功能,降低代码耦合度,并通过具体代码示例演示了JDK动态代理的实现过程。
Spring5入门到实战------9、AOP基本概念、底层原理、JDK动态代理实现
|
1月前
|
Java 数据安全/隐私保护 Spring
Spring进阶:初识动态代理
本文介绍了Spring框架中AOP切面编程的基础——动态代理。通过定义Vehicle接口及其实现类Car和Ship,展示了如何使用动态代理在不修改原代码的基础上增强功能。文章详细解释了动态代理的工作原理,包括通过`Proxy.newProxyInstance()`方法创建代理对象,以及`InvocationHandler`接口中的`invoke()`方法如何处理代理对象的方法调用。最后,通过一个测试类`TestVehicle`演示了动态代理的具体应用。
|
2月前
|
设计模式 Java 测试技术
spring复习04,静态代理动态代理,AOP
这篇文章讲解了Java代理模式的相关知识,包括静态代理和动态代理(JDK动态代理和CGLIB),以及AOP(面向切面编程)的概念和在Spring框架中的应用。文章还提供了详细的示例代码,演示了如何使用Spring AOP进行方法增强和代理对象的创建。
spring复习04,静态代理动态代理,AOP
|
1月前
|
Java API Spring
springboot学习七:Spring Boot2.x 拦截器基础入门&实战项目场景实现
这篇文章是关于Spring Boot 2.x中拦截器的入门教程和实战项目场景实现的详细指南。
28 0
springboot学习七:Spring Boot2.x 拦截器基础入门&实战项目场景实现
|
3月前
|
前端开发 JavaScript Java
Spring Boot中使用拦截器
本节主要介绍了 Spring Boot 中拦截器的使用,从拦截器的创建、配置,到拦截器对静态资源的影响,都做了详细的分析。Spring Boot 2.0 之后拦截器的配置支持两种方式,可以根据实际情况选择不同的配置方式。最后结合实际中的使用,举了两个常用的场景,希望读者能够认真消化,掌握拦截器的使用。
|
4月前
|
监控 前端开发 Java
Spring Boot中的拦截器配置
Spring Boot中的拦截器配置
|
5月前
|
XML Java 数据格式
Spring5系列学习文章分享---第三篇(AOP概念+原理+动态代理+术语+Aspect+操作案例(注解与配置方式))
Spring5系列学习文章分享---第三篇(AOP概念+原理+动态代理+术语+Aspect+操作案例(注解与配置方式))
52 0
|
5月前
|
监控 前端开发 Java
Spring Boot中的拦截器配置
Spring Boot中的拦截器配置
下一篇
无影云桌面