JAVA动态代理(拦截器)
来源:互联网 发布:什么是犀牛软件 编辑:程序博客网 时间:2024/06/03 22:01
定义一个接口
package hb.servlet.intercepter;public interface Dog {public void info();public void run();}
接口的实现
package hb.servlet.intercepter;import org.apache.log4j.Logger;public class DogImpl implements Dog {private static Logger log = Logger.getLogger(DogImpl.class);public void info() {log.info("一只猎狗");}public void run() {log.info("我奔跑迅速");}}
拦截器方法
package hb.servlet.intercepter;public class DogIntercepter {public void method1() {System.out.println("111111111模拟通用方法一");}public void method2() {System.out.println("222222222模拟通用方法二");}}
代理类的实现
package hb.servlet.intercepter;import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;public class ProxyHandler implements InvocationHandler {private Object target;DogIntercepter di = new DogIntercepter();public Object invoke(Object proxy, Method method, Object[] args)throws Throwable {Object result = null;if (method.getName().equals("info")) {di.method1();result = method.invoke(target, args);di.method2();} else {result = method.invoke(target, args);}return result;}public void setTarget(Object o) {this.target = o;}}
代理类工厂
package hb.servlet.intercepter;
import java.lang.reflect.Proxy;public class MyProxyFactory {public static Object getProxy(Object object) {ProxyHandler handler = new ProxyHandler();handler.setTarget(object);// 第一个参数是用来创建动态代理的ClassLoader对象,只要该对象能访问Dog接口即可// 第二个参数是接口数组,正是代理该接口的数组// 第三个参数是代理包含的处理实例return Proxy.newProxyInstance(DogImpl.class.getClassLoader(), object.getClass().getInterfaces(), handler);}}
测试
package hb.servlet.intercepter;public class TestDog {public static void main(String[] args) {Dog targetObject = new DogImpl();Dog dog = null;Object proxy = MyProxyFactory.getProxy(targetObject);if (proxy instanceof Dog) {dog = (Dog) proxy;}dog.info();dog.run();}}
- JAVA动态代理(拦截器)
- JAVA动态代理(拦截器)
- 拦截器与动态代理
- 使用Java动态代理实现的拦截器
- Java中使用动态代理实现拦截器
- JAVA动态代理和方法拦截(使用CGLib实现AOP、方法拦截、委托)
- java 动态代理范例 InvocationHandler与Proxy,拦截与代理
- 动态代理--struts的拦截器基础
- Mybaitis 原理之动态代理拦截器
- 初识动态代理-jdk,CGLIB,拦截器
- commons-proxy-1.0 动态代理, 拦截器.
- Struts学习笔记(五)拦截器上 拦截器的基本原理(动态代理)
- 好记性不如烂笔头46-java拦截器-彻底理解动态代理的概念(1)
- 好记性不如烂笔头47-java拦截器-用CGLib实现动态代理(2)
- java动态代理对象实现日志的拦截(annotation自定义注解方式)
- 动态代理(java)
- jdk动态代理拦截方法
- JDK动态代理实现拦截
- windows中的右下角没有出现“小喇叭”图标怎么解决
- Excel的逻辑函数例子
- linux启动oracle
- union用法
- oracle分页
- JAVA动态代理(拦截器)
- C++必知必会之(25)实参相依的查找
- oracle数据加密
- linux 开机执行shell命令
- JSTL中的fn函数总结
- javascript日期比较
- windows小知识点
- Windows 下OpenSSL 安装详解 +图解
- Tomcat的虚拟目录