|
|
@ -1,9 +1,9 @@
|
|
|
|
最近在看 SpringAOP 部分的源码,所以对 JDK 动态代理具体是如何实现的这件事产生了很高的兴趣,而且能从源码上了解这个原理的话,也有助于对 spring-aop 模块的理解。话不多说,上代码。
|
|
|
|
最近在看 SpringAOP 部分的源码,所以对 JDK 动态代理具体是如何实现的这件事产生了很高的兴趣,而且能从源码上了解这个原理的话,也有助于对 spring-aop 模块的理解。话不多说,上代码。
|
|
|
|
|
|
|
|
|
|
|
|
```java
|
|
|
|
```java
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 一般会使用实现了 InvocationHandler 的类 作为代理对象的生产工厂,
|
|
|
|
* 一般会使用实现了 InvocationHandler接口的类 作为代理对象生成工厂,
|
|
|
|
* 并且通过持有被代理对象 target,来在 invoke() 方法中对被代理对象的目标方法进行调用和增强,
|
|
|
|
* 并且通过持有被代理对象 target,在 invoke() 方法中对被代理对象的目标方法进行调用和增强,
|
|
|
|
* 这些我们都能通过下面这段代码看懂,但代理对象是如何生成的?invoke() 方法又是如何被调用的呢?
|
|
|
|
* 这些我们都能通过下面这段代码看懂,但代理对象是如何生成的?invoke() 方法又是如何被调用的呢?
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
public class ProxyFactory implements InvocationHandler{
|
|
|
|
public class ProxyFactory implements InvocationHandler{
|
|
|
@ -37,7 +37,6 @@ public class TargetObject implements MyInterface {
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public void play() {
|
|
|
|
public void play() {
|
|
|
|
System.out.println("妲己,陪你玩 ~");
|
|
|
|
System.out.println("妲己,陪你玩 ~");
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|