文档章节

java cglib动态代理

y
 yan5845hao
发布于 2017/05/18 11:49
字数 176
阅读 13
收藏 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"));  

© 著作权归作者所有

共有 人打赏支持
上一篇: Docker 安装RabbitMQ
下一篇: for 迭代方式
y
粉丝 7
博文 124
码字总数 22079
作品 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
JDK动态代理与Cglib动态代理(转载)

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

思悟修
2015/08/14
0
0
深入理解Cglib动态代理及手动实现

CGLIB介绍与原理(部分节选自网络) 一、什么是CGLIB? CGLIB是一个功能强大,高性能的代码生成包。它为没有实现接口的类提供代理,为JDK的动态代理提供了很好的补充。通常可以使用Java的动态代...

HOT_POT
07/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

mybatis学习(1)

JDBC连接方式: 1.底层没有使用连接池,操作数据库需要频繁的创建和关闭连接,消耗资源。 2.写原生的JDBC代码在JAVA中,一旦需要修改SQL的话(比如表增加字段),JAVA需要整体重新编译,不利...

杨健-YJ
48分钟前
2
0
怎么组织文档

可以从以下几个方面考虑组织文档: ☐ 各种分支的界面截图和对应的类及文件 ☐ 框架或类图 ☐ 流程图 ☐ 时序图 ☐ 注意事项

-___-
59分钟前
3
0
分布式之数据库和缓存双写一致性方案解析

引言 为什么写这篇文章? 首先,缓存由于其高并发和高性能的特性,已经在项目中被广泛使用。在读取缓存方面,大家没啥疑问,都是按照下图的流程来进行业务操作。 但是在更新缓存方面,对于更...

别打我会飞
今天
13
0
我的oracle11G,12c OCM之路

ocm认证感悟 ---------------------- 距离拿到ocm证书已经过了1年的时间,当初拿到证书的心情到现在还记得。其实在每个DBA心里都有一个成为强者的梦想,需要被认可,我也一样。我干过开发,做...

hnairdb
今天
4
1
手动部署kubernetes集群(1.13.1最新版)

一、机器规划 使用五台机子部署k8s集群,规划如下: master节点3台(同时也是etcd节点) node节点2台 ip分配如下: ip:192.168.10.101,主机名:k8s-etcd01 ip:192.168.10.102,主机名:k8s...

人在艹木中
今天
32
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部