- 这里主要学习用CGLIB来生成的动态代理类,不考虑静态代理,ps:其实javassist,JDK内置ASM库也可以生成动态代理类的,ASM性能是最好的,但却是最难的
- 就是在运行时,动态的生成代理类
- 1.安全
- 2.能延迟加载,进而提升系统性能
- 应用:将在系统启动时消耗资源最多的方法使用代理模式优化
- 模式结构:主题接口+真实主题+生成代理类+客户端

public interface IDBQuery {
String request();
}
public class DBQuery implements IDBQuery {
public DBQuery() {
try {
Thread.sleep(1000);
}catch (InterruptedException e){
e.printStackTrace();
}
}
@Override
public String request() {
return "db request";
}
}
public class CglibDbQueryInterceptor implements MethodInterceptor {
IDBQuery real=null;
@Override
public Object intercept(Object o, Method method, Object[] objects, MethodProxy methodProxy) throws Throwable {
if (real==null){
real=new DBQuery();
}
return real.request();
}
public static IDBQuery createCglibProxy(){
Enhancer enhancer = new Enhancer();
enhancer.setCallback(new CglibDbQueryInterceptor());
enhancer.setInterfaces(new Class[]{IDBQuery.class});
IDBQuery o = (IDBQuery)enhancer.create();
return o;
}
}
- 学习结论:1.主要提升系统启动速度
- 2.感觉应用在dao层效果最好
- 3.用的插件别人都是弄好的,知道怎么搞就好了,咱就扩展下知识,感觉找不到实用的地方-_-!!!