版权声明:转载请申明出处,谢谢 https://blog.csdn.net/qq_35495763/article/details/88145119
Update Time:2019-3-4 Author:要你命三千又三千 type:学习笔记
在开发中用到的技术由来(概要)
- 反射技术
ioc 就是利用反射实现对象的建立,再注入。 - 动态代理的实现
- 动态代理和责任链无论在 Spring还是在MyBatis中都有重要的应用
由于动态代理一般都比较难理解,程序设计者会设计一个拦截器接口供开发者使用,开发者只要知道拦截器接口的方法、含义和作用即可。 - 几种设计模式责任链模式,观察者模式,工厂模式,建造者模式.(参考设计模式篇章)
- JDK 动态代理
JDK 动态代理是 java.lang.reflect. *包提供的方式,它必须借助 个接口才能产生代理对象,所以先定义接口,
关键字:
- java.lang.reflect.*包提供
- 借助接口实现
public interface HelloWorld {
public roid sayHelloWorld () ;
}
public class HelloWorldimpl implements HelloWorld {
@Override
public void sayHelloWorld() {
System.out.println (”Hello World");
}
}
public class JdkProxyExample implements InvocationHandler {
//真实对象
private Object target = null;
/**
*建立代理对象和真实对象的代理关系,并返回代理对象
* @param target 真实对象
20
* @return 代理对象
女/
public Ob] ect bind(Object target) {
this . target = target; //代理目标
return Proxy . newProxyI sta ce(target getClass () .getClassLoader(), target.getClass() . getinterfaces() , this); //代理目标
/*
* @param proxy 代理对象
* @param method 当前调度方法
* @param args 当前方法参数
* @return 代理结果返回
* @throws Throwable 异常
* /
@Override
public Object invoke (Object proxy , Method method , Object [] args ) throws Throwable {
System.out println 进入代理逻辑方法”);
System out.println 在调度真实对象之前的服务”);
Object obj= method .invoke(target , args //相当于调用 sayHelloWorld方法
System.out.println 在调度真实对象之后的服 ”);
return obj ;
}}}