全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

java 代理机制的实例详解

java 代理机制的实例详解

前言:

 java代理分静态代理和动态代理,动态代理有jdk代理和cglib代理两种,在运行时生成新的子类class文件。本文主要练习下动态代理,代码用于备忘。对于代理的原理和机制,网上有很多写的很好的,就不班门弄斧了。

jdk代理

实例代码

import java.lang.reflect.InvocationHandler; 
import java.lang.reflect.Method; 
import java.lang.reflect.Proxy; 
 
public class ProxyFactory implements InvocationHandler {  
    
  private Object tarjectObject;  
  
  public Object creatProxyInstance(Object obj) {  
    this.tarjectObject = obj; 
    return Proxy.newProxyInstance(this.tarjectObject.getClass()  
        .getClassLoader(), this.tarjectObject.getClass()  
        .getInterfaces(), this);  
  }  
  
  @Override  
  public Object invoke(Object proxy, Method method, Object[] args)  
      throws Throwable {  
    Object result = null;  
    if (AssessUtils.isAssess()) {  
      result = method.invoke(this.tarjectObject, args);  
    }else{ 
      throw new NoAssessException("This server cannot run this service."); 
    } 
    return result;  
  } 
} 

cglib代理

import java.lang.reflect.Method; 
import org.springframework.cglib.proxy.Enhancer; 
import org.springframework.cglib.proxy.MethodInterceptor; 
import org.springframework.cglib.proxy.MethodProxy; 
 
public class ProxyCglibFactory implements MethodInterceptor {  
    
  private Object tarjectObject;  
  
  public Object creatProxyInstance(Object obj) {  
    this.tarjectObject = obj; 
    Enhancer enhancer=new Enhancer(); 
    enhancer.setSuperclass(this.tarjectObject.getClass()); 
    enhancer.setCallback(this); 
    return enhancer.create(); 
  } 
 
  @Override 
  public Object intercept(Object obj, Method method, Object[] args, 
      MethodProxy arg3) throws Throwable { 
    Object result = null;  
    if (AssessUtils.isAssess()) {  
      result = method.invoke(this.tarjectObject, args);  
    }else{ 
      throw new NoAssessException("This server cannot run this service."); 
    } 
    return result;  
  } 
} 

Aspect注解

import org.aspectj.lang.JoinPoint; 
import org.aspectj.lang.ProceedingJoinPoint; 
import org.aspectj.lang.annotation.Around; 
import org.aspectj.lang.annotation.Aspect; 
import org.aspectj.lang.annotation.Before; 
import org.aspectj.lang.annotation.Pointcut; 
 
@Aspect 
public class AssessInterceptor { 
  @Pointcut(value="execution (* com..*.*(..))") 
  private void anyMethod(){}; 
   
  @Before("anyMethod()") 
  public void doBefore(JoinPoint joinPoint) throws NoAssessException{ 
    if (!AssessUtils.isAssess()) {  
      throw new NoAssessException("This server cannot run this service."); 
    } 
  } 
   
  /** 
   * Around异常的时候调用 
   * @param pjp 
   * @throws Throwable 
   */ 
  @Around("anyMethod()") 
  public void invoke(ProceedingJoinPoint pjp) throws Throwable{ 
    pjp.proceed();  
  } 
 
} 

以上就是java代理机制的实例,如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# java  # 代理机制  # 代理机制的实例  # 代理机制如何实现  # 全面了解Java中的CAS机制  # 关于Java反射机制 你需要知道的事情  # Java动态代理机制的实例详解  # 浅谈用java实现事件驱动机制  # Java Proxy机制详细解读  # 很好  # 班门弄斧  # 子类  # 有很多  # 就不  # 如有  # 两种  # 希望能  # 谢谢大家  # 疑问请  # 网上  # creatProxyInstance  # obj  # return  # tarjectObject  # implements  # ProxyFactory  # Object  # private  # getClassLoader 


相关文章: 建站主机系统SEO优化与智能配置核心关键词操作指南  微信小程序 五星评分(包括半颗星评分)实例代码  JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)  魔方云NAT建站如何实现端口转发?  合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?  佛山网站制作系统,佛山企业变更地址网上办理步骤?  c# Task.Yield 的作用是什么 它和Task.Delay(1)有区别吗  如何快速查询域名建站关键信息?  如何注册花生壳免费域名并搭建个人网站?  制作假网页,招聘网的薪资待遇,会有靠谱的吗?一面试又各种折扣?  表情包在线制作网站免费,表情包怎么弄?  大连 网站制作,大连天途有线官网?  儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?  c# 在高并发场景下,委托和接口调用的性能对比  IOS倒计时设置UIButton标题title的抖动问题  如何在万网主机上快速搭建网站?  微网站制作教程,我微信里的网站怎么才能复制到浏览器里?  广州网站建站公司选择指南:建站流程与SEO优化关键词解析  建站主机空间推荐 高性价比配置与快速部署方案解析  php条件判断怎么写_ifelse和switchcase的使用区别【对比】  阿里云网站搭建费用解析:服务器价格与建站成本优化指南  如何确保FTP站点访问权限与数据传输安全?  C++ static_cast和dynamic_cast区别_C++静态转换与动态类型安全转换  建站之星后台搭建步骤解析:模板选择与产品管理实操指南  实现虚拟支付需哪些建站技术支撑?  武清网站制作公司,天津武清个人营业执照注销查询系统网站?  电影网站制作价格表,那些提供免费电影的网站,他们是怎么盈利的?  网站制作的软件有哪些,制作微信公众号除了秀米还有哪些比较好用的平台?  如何用搬瓦工VPS快速搭建个人网站?  我的世界制作壁纸网站下载,手机怎么换我的世界壁纸?  如何使用Golang安装API文档生成工具_快速生成接口文档  网站制作与设计教程,如何制作一个企业网站,建设网站的基本步骤有哪些?  如何打造高效商业网站?建站目的决定转化率  如何在七牛云存储上搭建网站并设置自定义域名?  Python路径拼接规范_跨平台处理说明【指导】  建站之星安装提示数据库无法连接如何解决?  韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐  h5在线制作网站电脑版下载,h5网页制作软件?  网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?  建站168自助建站系统:快速模板定制与SEO优化指南  电脑免费海报制作网站推荐,招聘海报哪个网站多?  GML (Geography Markup Language)是什么,它如何用XML来表示地理空间信息?  网站网页制作电话怎么打,怎样安装和使用钉钉软件免费打电话?  自助网站制作软件,个人如何自助建网站?  c# await 一个已经完成的Task会发生什么  宝塔新建站点报错如何解决?  网站制作软件免费下载安装,有哪些免费下载的软件网站?  如何选择高效便捷的WAP商城建站系统?  招商网站制作流程,网站招商广告语?  如何在阿里云ECS服务器部署织梦CMS网站? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。