SSM学习笔记(4)(重点)

问题:

 

1、什么是动态代理模式?

2、常见的动态代理模式有哪些?

3、JDK动态代理的理解

 

解决:

1、动态代理的意义在于生成一个占位(又称代理对象),来代理真实对象,从而控制真实对象的访问。

 

2、常见的代理模式:JDK动态代理和CGLIB动态代理

 

3、JDK动态是java.lang.reflect.*包的提供方式,它必须借助一个接口才能产生代理对象,所以先定义接口。

接口——》实现类——》JDK动态代理

直接上代码:

//接口
public interface HelloWorld{
public void sayHelloWorld();
}

 

//实现接口


public class HelloWorldImpl implements HelloWorld{
public void sayHelloWorld(){
System.out.println("hello world");
}

 

//动态代理绑定和代理逻辑实现


public class JdkProxyExample implements InvocationHandler{

//真实对象
private Object target = null;
/**
*建立代理对象和真实对象的代理关系,并返回代理对象
*/
public Object bind(Object target){
this.target = target;
return Proxy.newProxyInstance(target.getClass().getClassLoader(),
target.getClass().getInterfaces(),this);
}

//代理方法逻辑
public Object invoke(Object proxy,Method method, Object [] args) throws
Throwable{
System.out.println("进入代理逻辑方法");
System.out.println("在调度真实对象之前的服务");
//相当于调度sayHelloWorld方法
Object obj = method.invoke(target,args);
System.out.println("在调度真实对象之后的服务");
return obj;
}
}

上面步骤主要是:

1、建立代理对象和真实对象的关系,通过bind方法

2、实现代理逻辑(invoke()方法)

//测试JDK动态代理
public void testJdkProxy{
JdkProxyExample jdk = new JdkProxyExceple();

HelloWorld proxy = (HelloWorldImpl)jdk.bind(new HelloWorldImpl());
peoxy.sayHelloWorld();
}
posted @ 2020-04-29 20:48  赚钱买个打印机  阅读(115)  评论(0编辑  收藏  举报