spring AOP 的实现是基于java的动态代理,其目的就是不改写原来代码来添加功能:
代理接口:
public interface User {
public void save();
public void test();
}
实现类:
public class UserImpl implements User {
public void save(){
System.out.println("Method save invoke!!!");
}
public void test(){
System.out.println("test method!!!1");
}
}
代理对象:
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.*;
public class UserProxy implements InvocationHandler {
private Object obj;
public Object bind(Object obj){
this.obj=obj;
return Proxy.newProxyInstance(obj.getClass().getClassLoader(),obj.getClass().getInterfaces(),this);
}
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
Object result = null;
if (method.getName().equalsIgnoreCase("save")) {
System.out.println("before invoke save method");
result = method.invoke(obj, args);
System.out.println("method invoke success!!!");
} else {
result = method.invoke(obj, args);
}
return result;
}
}
测试对象:
public class Tester {
public static void main(String[] args) {
UserProxy userProxy= new UserProxy();
User u =(User)userProxy.bind(new UserImpl());
u.save();
u.test();
}
}
分享到:
相关推荐
SpringAOP动态代理 Spring AOP 使用的动态代理主要有两种方式:JDK 动态代理和 CGLIB 代理。 JDK 动态代理:用于代理实现了接口的类。Spring 会使用 java.lang.reflect.Proxy 类来创建代理对象。 CGLIB 代理:用于...
关于SpringAOP和java动态代理的示例和讲解,带PPT。
通过动态代理模拟Spring AOP,通过动态代理模拟Spring AOP
Spring-AOP-利用java中的动态代理和Spring的拦截器做到AOP
NULL 博文链接:https://jadeluo.iteye.com/blog/1940019
描述一下Spring AOP? 在Spring AOP中关注点(concern)和横切关注点(cross-cutting ...Spring AOP 代理是什么? 引介(Introduction)是什么? 连接点(Joint Point)和切入点(Point Cut)是什么? 织入(Weaving)是什么?
为了说明Spring的AOP原理,本人使用代理模式中的动态代理完成演示AOP编程的原理的演示。相信,如果你耐心看完整个程序(几乎一行注释一行代码),那么你对Spring这个东西就不是觉得有什么神秘了! 阅读对象:凡是喜爱...
java 动态代理实现,模拟了spring实现aop的原理,对学习面向切面编程的朋友有帮助!
java中动态代理,springAop.pdf
Spring AOP主要基于动态代理模式,它允许开发者在不改变原有代码结构的情况下,增加额外的行为。这主要通过定义“切面(Aspects)”和“通知(Advices)”来实现,其中切面定义了何时以及如何插入额外的行为,而通知...
Spring AOP是基于代理模式实现的,主要包括动态代理、通知(Advice)、切点(Pointcut)、切面(Aspect)和连接点(Join point)。动态代理是实现AOP的基础,它通过JDK动态代理或CGLIB代理生成被代理对象的子类。...
本资源将深入探讨Spring框架中使用的两种关键的动态代理方式:JDK动态代理和CGLib动态代理。这两种代理方式在Spring AOP中起到关键作用,用于实现横切关注点的切面编程。通过学习它们的原理和实际应用,您将能够更好...
Spring AOP 的本质其实就是实现了动态代理,这个和Aspectj不一样,AspectJ 是直接修改你的字节码 完成的 代理模式其实很简单 主要包括 接口+真实的实现类+代理类 在真实类的实例化的时候 使用代理类,所以需要 ...
NULL 博文链接:https://arne3166.iteye.com/blog/1046340
AOP动态代理描述了Spring AOP中使用Java高级技术功能实现的动态代理,为Spring IOC等高级开发实现了逻辑功能;
Spring主要有两大思想,一个是IoC,另一个就是AOP,对于IoC,AOP的原理就是java的动态代理机制