Java实现的拦截器

/**

  * 动态生成一个代理类对象,并绑定被代理类和代理处理器

  *

  * @param business

  * @return 代理类对象

  */

  public Object bind(Object business) {

  this.business = business;

  return Proxy.newProxyInstance(

  //被代理类 的ClassLoader

  business.getClass().getClassLoader(),

  //要被代理 的接口,本方法返回对象会自动声称实现了这些接口

  business.getClass().getInterfaces(),

  //代理处理 器对象

  this);

  }

  /**

  * 代理要调用的方法,并在方法调用前后调用连接器的方法.

  *

  * @param proxy  代理类对象

  * @param method 被代理的接口方法

  * @param args   被代理接口方法的参数

  * @return 方法调用返回的结果

  * @throws Throwable

  */

  public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {

  Object result = null;

  interceptor.before();

  result=method.invoke(business,args);

  interceptor.after();

  return null;  //To change body of implemented methods use File | Settings | File Templates.

  }

  }

  三、拦截器:普通的JavaBean,在调用业务方法的之前或者之后会自动拦截并执行自己的 一些方法。

  /**

  * 拦截器

  */

  public class InterceptorClass {

  public void before(){

  System.out.println("拦截器InterceptorClass方法调用:before()!");

  }

  public void after(){

  System.out.println("拦截器InterceptorClass方法调用:after()!");

  }

  }

  四、模拟客户端:执行业务处理的入口。

  /**

  * 客户端

  */

  public class Client {

  public static void main(String args[]) {

  DynamicProxyHandler handler = new DynamicProxyHandler();

  BusinessInterface business = new BusinessClass();

  BusinessInterface businessProxy = (BusinessInterface) handler.bind(business);

  businessProxy.doSomething();

  }

  }

转载于:https://www.cnblogs.com/yjcn/p/4570310.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值