文档章节

java cglib动态代理

y
 yan5845hao
发布于 2017/05/18 11:49
字数 176
阅读 12
收藏 0
  • cglib是个什么鬼?
cglib 主要是在ASM的基础上实现的,cglib 对于final的方法无法处理。
cglib 主要是在代理类上生成子类,对父类的方法执行前、执行后、异常等添加执行逻辑。
  • 基类
package com.uwo.resources.ui.proxy.cglib;
public class Uwo{
    public String hello(String name){  
        System.out.println("====" + name + "====");  
        return "hello," + name;
    }
} 
  • 实现MethodInterceptor
package com.uwo.resources.ui.proxy.cglib;
import net.sf.cglib.proxy.MethodInterceptor;
import net.sf.cglib.proxy.MethodProxy;
import java.lang.reflect.Method;
/**
 * Created by yanhao on 2017/5/12.
 */
public class UwoInterceptor implements MethodInterceptor{
    public Object intercept(Object o, Method method, Object[] objects, MethodProxy proxy) throws Throwable {
        System.out.println("前");
        Object value = proxy.invokeSuper(o, objects);
        System.out.println("后");
        return value;
    }
}
  • 实现
Enhancer hancer = new Enhancer();
// 设置代理对象的父类  Uwo.class
hancer.setSuperclass(Uwo.class);
// 设置现实MethodInterceptor接口对象
hancer.setCallback(new UwoInterceptor());
// 创建代理对象  
Uwo uwo = hancer.create();  
System.out.println(uwo.hello("YH"));  

© 著作权归作者所有

共有 人打赏支持
y
粉丝 7
博文 120
码字总数 21375
作品 0
扬州
程序员
cglib代理和java自带代理的区别

一 动态代理主要有java自带的代理和cglib方式实现的代理 首先讲下java自带的代理 ------------------然后是cglib自带的代理------------------------- 测试类: java动态代理是利用反射机制生...

sen_ye
07/15
0
0
java动态代理和cglib动态代理

动态代理应用广泛,Spring,Struts等框架很多功能是通过动态代理,或者进一步封装来实现的。 常见的动态代理模式实现有Java API提供的动态代理和第三方开源类库CGLIB动态代理。 Java API提供...

Carl_
2014/12/30
0
0
CGLIB子类代理和JDK动态代理示例和比较

Cglib代理,也叫做子类代理。在内存中构建一个子类对象从而实现对目标对象功能的扩展。 比较: JDK的动态代理有一个限制,就是使用动态代理的对象必须实现一个或多个接口。如果想代理没有实现...

AI9o後
2017/11/06
0
0
Java面试基础篇——第十五篇:代理模式

什么是代理? 通过代理控制对象的访问,可以详细访问某个对象的方法,在这个方法调用处理,或调用后处理。 代理应用场景 安全代理 可以屏蔽真实角色远程代理 远程调用代理类RMI延迟加载 先加载...

developlee的潇洒人生
08/02
0
0
JDK动态代理与Cglib动态代理(转载)

spring容器通过动态代理再结合java反射思想可以使得方法调用更加简洁 一、动态代理概述: 与静态代理对照(关于静态代理的介绍 可以阅读上一篇:JAVA设计模式之 代理模式【Proxy Pattern】(...

思悟修
2015/08/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

阿里云API网关使用教程

API 网关(API Gateway)提供高性能、高可用的 API 托管服务,帮助用户对外开放其部署在 ECS、容器服务等阿里云产品上的应用,提供完整的 API 发布、管理、维护生命周期管理。用户只需进行简...

mcy0425
33分钟前
4
0
解决远程登陆误按ctrl+s锁屏假死恢复

使用putty时,偶尔发生屏幕假死,不能输入等情况。 后来发现,只要数据ctrl+s,就会假死;输入ctrl+q就可以恢复过来。 很多刚从windows转移到linux上来工作的朋友,在用vi/vim编辑文件时,常常...

HJCui
36分钟前
0
0
@Transactional

事务管理是应用系统开发中必不可少的一部分。Spring 为事务管理提供了丰富的功能支持。Spring 事务管理分为编程式和声明式的两种方式。编程式事务指的是通过编码方式实现事务;声明式事务基于...

asdf08442a
40分钟前
2
0
widows下强制解除8080端口占用问题

使用win+R打开命令窗口 输入以下命令查看哪个任务占用了8080端口 netstat -ano |findstr "8080" 然后通过任务id强制关闭占用该端口的进程 tskill 10044 // 自己的试情况而定,这个ID是LISTE...

_Artisan
50分钟前
2
0
productFlavors简单实用

最近项目中,不同环境需要配置的参数越来越多,为了减少修改代码次数。研究了一下productFlavors的使用方式,总结如下 1. as3.0以上版本使用productFlavors时需要指定一个flavorDimensions,...

火云
52分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部