- 浏览: 7357404 次
- 性别:
- 来自: 上海
-
文章分类
- 全部博客 (1546)
- 企业中间件 (236)
- 企业应用面临的问题 (236)
- 小布Oracle学习笔记汇总 (36)
- Spring 开发应用 (54)
- IBatis开发应用 (16)
- Oracle基础学习 (23)
- struts2.0 (41)
- JVM&ClassLoader&GC (16)
- JQuery的开发应用 (17)
- WebService的开发应用 (21)
- Java&Socket (44)
- 开源组件的应用 (254)
- 常用Javascript的开发应用 (28)
- J2EE开发技术指南 (163)
- EJB3开发应用 (11)
- GIS&Mobile&MAP (36)
- SWT-GEF-RCP (52)
- 算法&数据结构 (6)
- Apache开源组件研究 (62)
- Hibernate 学习应用 (57)
- java并发编程 (59)
- MySQL&Mongodb&MS/SQL (15)
- Oracle数据库实验室 (55)
- 搜索引擎的开发应用 (34)
- 软件工程师笔试经典 (14)
- 其他杂项 (10)
- AndroidPn& MQTT&C2DM&推技术 (29)
- ActiveMQ学习和研究 (38)
- Google技术应用开发和API分析 (11)
- flex的学习总结 (59)
- 项目中一点总结 (20)
- java疑惑 java面向对象编程 (28)
- Android 开发学习 (133)
- linux和UNIX的总结 (37)
- Titanium学习总结 (20)
- JQueryMobile学习总结 (34)
- Phonegap学习总结 (32)
- HTML5学习总结 (41)
- JeeCMS研究和理解分析 (9)
最新评论
-
lgh1992314:
[u][i][b][flash=200,200][url][i ...
看看mybatis 源代码 -
尼古拉斯.fwp:
图片根本就不出来好吧。。。。。。
Android文件图片上传的详细讲解(一)HTTP multipart/form-data 上传报文格式实现手机端上传 -
ln94223:
第一个应该用排它网关吧 怎么是并行网关, 并行网关是所有exe ...
工作流Activiti的学习总结(八)Activiti自动执行的应用 -
ZY199266:
获取不到任何消息信息,请问这是什么原因呢?
ActiveMQ 通过JMX监控Connection,Queue,Topic的信息 -
xiaoyao霄:
DestinationSourceMonitor 报错 应该导 ...
ActiveMQ 通过JMX监控Connection,Queue,Topic的信息
CGlib 就2个例能说明一切
先是使用类
<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->public class MyClass {
public void method() {
System.out.println("MyClass.method()");
}
public void method2() {
System.out.println("MyClass.method2()");
}
}
public void method() {
System.out.println("MyClass.method()");
}
public void method2() {
System.out.println("MyClass.method2()");
}
}
例1:
<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->import java.lang.reflect.Method;
import net.sf.cglib.proxy.Enhancer;
import net.sf.cglib.proxy.MethodProxy;
import net.sf.cglib.proxy.MethodInterceptor;
public class Main {
public static void main(String[] args) {
Enhancer enhancer = new Enhancer();
//在这代理了
enhancer.setSuperclass(MyClass.class);
enhancer.setCallback( new MethodInterceptorImpl() );
// 创造 代理 (动态扩展了MyClass类)
MyClass my = (MyClass)enhancer.create();
my.method();
}
private static class MethodInterceptorImpl implements MethodInterceptor {
public Object intercept(Object obj,
Method method,
Object[] args,
MethodProxy proxy) throws Throwable {
System.out.println(method);
proxy.invokeSuper(obj, args);
return null;
}
}
}
import net.sf.cglib.proxy.Enhancer;
import net.sf.cglib.proxy.MethodProxy;
import net.sf.cglib.proxy.MethodInterceptor;
public class Main {
public static void main(String[] args) {
Enhancer enhancer = new Enhancer();
//在这代理了
enhancer.setSuperclass(MyClass.class);
enhancer.setCallback( new MethodInterceptorImpl() );
// 创造 代理 (动态扩展了MyClass类)
MyClass my = (MyClass)enhancer.create();
my.method();
}
private static class MethodInterceptorImpl implements MethodInterceptor {
public Object intercept(Object obj,
Method method,
Object[] args,
MethodProxy proxy) throws Throwable {
System.out.println(method);
proxy.invokeSuper(obj, args);
return null;
}
}
}
例2:
<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->import java.lang.reflect.Method;
import net.sf.cglib.proxy.Enhancer;
import net.sf.cglib.proxy.MethodProxy;
import net.sf.cglib.proxy.MethodInterceptor;
import net.sf.cglib.proxy.NoOp;
import net.sf.cglib.proxy.Callback;
import net.sf.cglib.proxy.CallbackFilter;
public class Main2 {
public static void main(String[] args) {
Callback[] callbacks =
new Callback[] { new MethodInterceptorImpl(), NoOp.INSTANCE };
Enhancer enhancer = new Enhancer();
enhancer.setSuperclass(MyClass.class);
enhancer.setCallbacks( callbacks );
//添加 方法过滤器 返回1为不运行 2 为运行
enhancer.setCallbackFilter( new CallbackFilterImpl() );
MyClass my = (MyClass)enhancer.create();
my.method();
my.method2();
}
private static class CallbackFilterImpl implements CallbackFilter {
public int accept(Method method) {
if ( method.getName().equals("method2") ) {
return 1;
} else {
return 0;
}
}
}
private static class MethodInterceptorImpl implements MethodInterceptor {
public Object intercept(Object obj,
Method method,
Object[] args,
MethodProxy proxy) throws Throwable {
System.out.println(method);
return proxy.invokeSuper(obj, args);
}
}
}
import net.sf.cglib.proxy.Enhancer;
import net.sf.cglib.proxy.MethodProxy;
import net.sf.cglib.proxy.MethodInterceptor;
import net.sf.cglib.proxy.NoOp;
import net.sf.cglib.proxy.Callback;
import net.sf.cglib.proxy.CallbackFilter;
public class Main2 {
public static void main(String[] args) {
Callback[] callbacks =
new Callback[] { new MethodInterceptorImpl(), NoOp.INSTANCE };
Enhancer enhancer = new Enhancer();
enhancer.setSuperclass(MyClass.class);
enhancer.setCallbacks( callbacks );
//添加 方法过滤器 返回1为不运行 2 为运行
enhancer.setCallbackFilter( new CallbackFilterImpl() );
MyClass my = (MyClass)enhancer.create();
my.method();
my.method2();
}
private static class CallbackFilterImpl implements CallbackFilter {
public int accept(Method method) {
if ( method.getName().equals("method2") ) {
return 1;
} else {
return 0;
}
}
}
private static class MethodInterceptorImpl implements MethodInterceptor {
public Object intercept(Object obj,
Method method,
Object[] args,
MethodProxy proxy) throws Throwable {
System.out.println(method);
return proxy.invokeSuper(obj, args);
}
}
}
简单不 哈哈 比jdk 中的动态代理好用 ,那还要接口 不太方便 。
发表评论
-
【转】Django resources
2014-01-23 14:35 10862Django resources This page li ... -
使用国内镜像源来加速python pypi包的安装
2014-01-16 11:16 197919pipy国内镜像目前有: http://pypi.d ... -
[转 ]vagrant使用简介
2014-01-10 13:53 258001> 简介: vagrant提供了易于配置,重复性 ... -
[转]在Java中调用Python
2014-01-07 13:08 9255在执行之前都需要把jython对应的包加载进去,这个是必须的 ... -
[转]Eclipse配置PyDev插件
2014-01-02 14:25 2870安装python解释器 安装PyDev: 首 ... -
RestFuse的研究(五) Http请求的封装
2014-06-14 15:50 3691在RestFuse中封装了Http请 ... -
RestFuse的研究(四) Junit的Statement的分析
2013-12-06 11:46 1706在RestFuse提供了多种单 ... -
RestFuse的研究(三) Junit的Rule的使用和分析
2013-12-06 11:01 2268在junit中定义一些可以公用的规则(R ... -
RestFuse的研究(二) Junit的Runner的分类和模式
2013-12-06 10:40 1631在Junit4中的调用JunitCore可以采 ... -
RestFuse的研究(一) HttpJunitRunner的实现
2013-12-06 10:11 1773在RestFuse是一种针对Rest We ... -
[转]An open-source JUnit extension to test HTTP/REST APIs
2013-12-06 09:57 1129http://developer.eclipsesource ... -
TestNG简单的学习(十三)TestNG中Junit的实现
2013-12-04 09:00 3384TestNG和junit的整合 ... -
TestNG简单的学习(十二)TestNG运行
2013-12-03 09:08 51645文档来自官方地址: ... -
TestNG简单的学习(十一)TestNG学习总结
2013-12-03 09:08 14268最近一直在学习关于TestNG方面的知识,根 ... -
TestNG简单的学习(十)TestNG @Listeners 的使用
2013-12-03 09:07 8731TestNG官方网站: http://testng.or ... -
TestNG简单的学习(九)TestNG Method Interceptors 的使用
2013-12-03 09:07 2746TestNG官方网站: http://testng ... -
TestNG简单的学习(八)TestNG Annotation Transformers 的使用
2013-12-03 09:07 2842TestNG官方网站: http://testng.or ... -
TestNG简单的学习(七)TestNG编程方式运行
2013-12-02 09:22 2486TestNG官方网站: http://testng.or ... -
TestNG简单的学习(六)测试工厂注释的使用
2013-12-02 09:22 2819TestNG官方网站: http://testng.or ... -
TestNG简单的学习(五)参数化测试数据的定制
2013-12-02 09:22 2732TestNG官方网站: http://testng.or ...
相关推荐
标题中的"AOP-CGLIB学习-实现简单的注解权限系统"指的是使用Spring的面向切面编程(AOP)特性,结合CGLIB库来创建一个基于注解的权限控制系统。在这个系统中,通过CGLIB动态代理技术,可以对带有特定注解的方法进行...
CGLib,全称为Code Generation Library,是一个强大的Java代码生成库,广泛用于动态代理、AOP...这个“cglib.zip”压缩包提供的内容,无论是源码还是文档,都值得我们去研究和学习,以便更好地利用CGLib解决实际问题。
CGLib,全称为Code Generation Library,是一个强大的高性能的代码生成库,它在Java世界中被广泛应用,尤其...通过深入学习CGLIB的源码,开发者可以更好地掌握Java的动态代理机制,提高自己的编程技巧和问题解决能力。
9. **源码学习价值**:CGLIB的源码是一个很好的学习字节码操作和代理技术的实例。通过阅读源码,可以深入理解Java字节码的生成过程,以及AOP的实现原理。 总的来说,CGLIB 3.1源码不仅为我们提供了实现动态代理的...
CGLIB 的基本代码量虽然不多,但由于缺乏充分的文档支持,学习起来可能会有一定难度。以下列出了 CGLIB 的主要组件: - **net.sf.cglib.core:** 提供低级别的字节码操作类;大部分与 ASM 相关。 - **...
**CGLIB(Code Generation Library)** 是一个强大的高性能的代码生成库,它可以在运行期扩展Java类与实现Java接口。...通过深入学习和理解CGLIB的工作机制,开发者可以更好地利用它来解决实际问题。
CGLIB,全称为Code Generation Library,是一种代码生成库,主要用在Java应用程序中,尤其在需要进行动态代理或者运行时织...通过学习和熟练使用CGLIB,开发者可以更好地应对需要动态生成代码或增强已有类功能的挑战。
CGLIB(Code Generation Library)是一个强大的高性能的代码生成库,它可以在运行期扩展Java类与实现...在学习和测试CGLIB时,可以尝试创建自己的拦截器,观察和理解其动态生成的字节码,以加深对其工作原理的理解。
通过这些示例,你可以学习如何使用ASM和CGlib进行字节码操作,理解它们的工作原理,并将这些技术应用到实际项目中,提高代码的灵活性和可维护性。同时,掌握这两种工具也有助于深入理解Java的运行机制,提升作为Java...
Cglib是一个强大的高性能的代码生成库,它在Java运行时动态地为一个类创建子类,从而实现对这个类的功能扩展。...对于想要深入理解Java运行机制以及提升开发技能的程序员来说,学习和掌握这两个库是十分必要的。
**正文** CGlib代理,全称为Code Generation Library,是一个强大的高性能的代码生成库,它在...同时,它也是许多流行框架的底层技术支撑,学习和掌握CGlib的使用,无疑能够提高我们的技术水平和解决实际问题的能力。
CGLib,全称为Code Generation Library,是一款Java平台上的代码生成库,...通过阅读和实践CGLib相关的博客文章,如给出的链接(可能需要登录访问),我们可以深入学习其工作原理和最佳实践,提高自己的Java编程技能。
总的来说,CGLIB是一个强大的字节码操作工具,对于理解和实现Spring AOP以及深入学习Java字节码技术具有重要意义。通过阅读和分析`cglib.jar`的源码,开发者可以更深入地理解CGLIB的工作原理,从而更好地利用它来...
动态代理和CGLIB在Java开发中扮演着重要的角色,特别是在实现面向切面编程...在学习和应用这些技术时,理解其原理和使用场景至关重要。通过实践和"study",我们可以更深入地掌握这些工具的使用,提高我们的编程能力。
CGLIB和ASM是Java开发中两个非常重要的库,主要用于字节码操作和动态代理技术。在Java中,字节码操作允许开发者在运行时...在学习和使用这两个库时,需要理解Java字节码的基础知识,以及如何利用它们实现特定的需求。
这个文件包含了Cglib的源代码,开发者可以查看和学习其内部实现,有助于理解Cglib的工作原理,也可以方便地进行调试和自定义修改。 **ASM:** ASM是一个Java字节码操控和分析框架,它可以用来动态生成类或者增强已...
CgLib是一个强大的Java字节码库,它允许开发者在运行时动态地创建新的类或增强现有的类。在Java世界中,动态代理是一种常见的...因此,学习和使用CgLib不仅能提升开发效率,也能加深对面向切面编程和设计模式的理解。
1. `cglib-src-2.2.3.jar`:这个文件包含了CGLIB库的源代码,开发者可以查看源码来了解其内部工作原理,这对于学习和调试是非常有用的。 2. `cglib-docs-2.2.3.jar`:这是CGLIB的文档文件,可能包含了API文档和其他...
这个文件包含CGLIB 2.2.2的源代码,对于开发者来说非常有价值,因为可以直接查看和学习其内部实现,有助于调试和定制。通过源代码,开发者可以深入理解CGLIB的工作原理,以及如何自定义其行为。 4. **cglib-docs-...
通过阅读和分析源码,我们可以了解到字节码生成的具体步骤,学习到如何利用ASM进行字节码操作,以及如何在Java中实现高效动态代理。总的来说,CGlib是Java开发中的一个强大工具,对于理解和实现复杂的企业级功能至关...