java静态代理,动态代理(JDK,CGLib)
来源:互联网 发布:linux搭建测试环境步骤 编辑:程序博客网 时间:2024/05/16 18:57
静态代理
Hello接口
public interface Hello { void say(String name);}
Hello实现类
public class HelloImpl implements Hello { public void say(String name) { System.out.println("Hello "+name); }}
Hello代理类
public class HelloProxy implements Hello { private Hello hello; public HelloProxy(){ hello = new HelloImpl(); } public void say(String name) { before(); hello.say(name); after(); } private void before(){ System.out.println("before"); } private void after(){ System.out.println("after"); }}测试类
public class Main { public static void main(String[] args) { Hello helloProxy = new HelloProxy(); helloProxy.say("world"); }}
DynamicProxy 类
public class DynamicProxy implements InvocationHandler { private Object target; public DynamicProxy(Object target){ this.target = target; } public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { System.out.println("before"); Object result = method.invoke(target,args); System.out.println("after"); return result; }}
public class main { public static void main(String[] args) { Hello hello = new HelloImpl(); DynamicProxy dynamicProxy = new DynamicProxy(hello); Hello helloProxy = (Hello)Proxy.newProxyInstance( hello.getClass().getClassLoader(), hello.getClass().getInterfaces(), dynamicProxy ); helloProxy.say("world"); }}
CGLib
CGLibProxy类
public class CGLibProxy implements MethodInterceptor{ private static CGLibProxy instance = new CGLibProxy(); private CGLibProxy(){ } public static CGLibProxy getInstance(){ return instance; } public <T> T getProxy(Class<T> cls){ return (T) Enhancer.create(cls,this); } public Object intercept(Object o, Method method, Object[] objects, MethodProxy methodProxy) throws Throwable { System.out.println("before"); Object result = methodProxy.invokeSuper(o,objects); System.out.println("after"); return result; }}
测试类
public class Main { public static void main(String[] args) { Hello helloProxy = CGLibProxy.getInstance().getProxy(HelloImpl.class); helloProxy.say("world"); }}
阅读全文
0 0
- java静态代理和动态代理(JDK和cglib)
- java静态代理和动态代理(JDK&cglib)
- java静态代理和动态代理(JDK&cglib)
- java静态代理,动态代理(JDK,CGLib)
- Java之代理(jdk静态代理,jdk动态代理,cglib动态代理,aop,aspectj)
- Java之代理(jdk静态代理,jdk动态代理,cglib动态代理,aop,aspectj)
- Java之代理(jdk静态代理,jdk动态代理,cglib动态代理,aop,aspectj)
- Java之代理(jdk静态代理,jdk动态代理,cglib动态代理,aop,aspectj)
- Java之代理(jdk静态代理,jdk动态代理,cglib动态代理,aop,aspectj)
- Java之代理(jdk静态代理,jdk动态代理,cglib动态代理,aop,aspectj)
- Java静态代理和jdk动态代理、Cglib动态代理
- Java JDK中的静态代理、动态代理&Cglib动态代理
- Java JDK中的静态代理、动态代理&Cglib动态代理
- java 静态代理,jdk动态代理,CGLIB动态代理详解
- java代理(静态代理和jdk动态代理以及cglib代理)
- java代理(静态代理和jdk动态代理以及cglib代理)
- java静态代理和动态代理(jdk,cglib)
- Java代理之(jdk静态代理/jdk动态代理/cglib动态代理/aop/aspectj)
- 图论入门及基本概念
- SQL分类:DDL/DML/DQL/DCL以及作用
- Xmind基础教程-打印
- 兼容更多浏览器自定义getElementsByClassName
- python3接收udp视频数据
- java静态代理,动态代理(JDK,CGLib)
- web前端入门 2017.6.10
- Gradle version 和 Android Plugin Version
- HBase协处理器加载过程(1.2)
- 很多不错的选业创业公共服务云平台
- BZOJ2301 HAOI2011 Problem b
- java实现图片与base64字符串之间的转换
- I/O复用
- 什么是网站性能优化技术?怎样提升移动端的用户体验?