java中简单使用CGLIB实现AOP的切面编程
package ppfuns.cglib;
import net.sf.cglib.proxy.Enhancer;
import net.sf.cglib.proxy.MethodInterceptor;
import net.sf.cglib.proxy.MethodProxy;
import java.lang.reflect.Method;
/**
* Created with IntelliJ IDEA.
* Date: 2018/1/12
* Time: 11:11
* To change this template use File | Settings | File Templates.
*/
public class EnhancerDemo {
public static void main(String[] args) {
Enhancer enhancer = new Enhancer();
enhancer.setSuperclass(EnhancerDemo.class);
enhancer.setCallback(new MethodInterceptorImpl());
EnhancerDemo demo = (EnhancerDemo) enhancer.create();
demo.test();
System.out.println(demo);
}
public void test(){
System.out.println("正在测试:"+EnhancerDemo.class.getName());
}
}
class MethodInterceptorImpl implements MethodInterceptor{
public Object intercept(Object o, Method method, Object[] objects, MethodProxy methodProxy) throws Throwable {
System.out.println("before test....."+method.getName());
Object t = methodProxy.invokeSuper(o,objects);
System.out.println("after test ...."+method.getName());
return t;
}
}
结果:
before test.....test
正在测试:ppfuns.cglib.EnhancerDemo
after test ....test
before test.....toString
before test.....hashCode
after test ....hashCode
after test ....toString
ppfuns.cglib.EnhancerDemo$$EnhancerByCGLIB$$fdf1bbc4@6ae40994
Process finished with exit code 0
分享到:
相关推荐
Java中的CGLib与反射是两种常用的...总的来说,CGLib和反射各有优势,选择哪种取决于具体应用场景。在实际开发中,两者也常被结合使用,以达到最佳效果。了解并熟练掌握这两种技术,对于提升Java开发能力具有重要意义。
CGLib,全称为Code Generation Library,是一个强大的高性能的代码生成库,它在运行期扩展Java类与实现Java接口。在Java编程中,我们有时需要在运行时动态地创建或修改类,CGLib就是为此目的而设计的。它广泛应用于...
在 AOP 中, Log Aspect 是一个常见的应用,CGLib 使得 Log Aspect 的实现变得很简单。可以通过创建一个 LogDAOProxy 类,实现 MethodInterceptor 接口,生成一个 DAO 的子类,并且设置好 callback 到 proxy。然后,...
### Java动态代理(JDK和cglib) #### 一、代理模式概述 代理模式是一种结构型设计模式,其中代理类含有一个对真实主题对象的引用,这样代理对象就可以执行一些预备或清理工作,并将真正的调用传递给真实主题对象...
Java动态代理是Java编程中一...JDK动态代理适用于接口代理,简单易用,而CGLIB则适用于非接口类的代理,提供了更广泛的应用场景。理解并熟练掌握这两种动态代理机制,对于提升Java开发的灵活性和可维护性具有重要意义。
在实际应用中,CGlib不仅用于动态代理,还广泛用于其他领域,如性能监控、测试工具、日志插桩等。了解并掌握CGlib对于深入理解Java字节码操作和AOP编程具有重要意义。通过熟练使用CGlib,开发者可以在不修改源码的...
CGLib,全称为Code Generation Library,是一个强大的Java字节码操作框架,广泛应用于动态代理、AOP(面向切面编程)等领域。它允许开发者在运行时动态地创建类的子类,以此来实现对已有类的方法进行增强或扩展。在...
CGlib(Code Generation Library)是Java中实现动态代理的一种常见方式,特别是在Java代理接口不适用或者目标类没有实现任何接口的情况下。 动态代理的主要应用场景包括日志记录、性能监控、事务管理、权限控制等。...
CGLib,全称为Code Generation Library,是一个强大的Java字节码操作库,广泛应用于动态代理、AOP(面向切面编程)以及性能优化等领域。它允许开发者在运行时创建和增强新的类或对象,而无需编写任何Java源代码。...
CGlib和ASM是Java开发中两个非常重要的库,主要用于字节码操作和动态代理。这两个库在Java生态系统中扮演着不可或缺的角色,特别是在AOP(面向切面编程)和ORM(对象关系映射)框架中。 CGlib是一个强大的、高性能...
### Java代理技术详解:JDK代理、CGLIB与AspectJ #### 一、代理模式简介 代理模式是一种常见的设计模式,在《Design Patterns in Java》一书中对其有明确的定义:“代理模式为一个对象提供一个代理,以控制对该...
CGLIB,全称为Code Generation Library,是一个强大的高性能的代码生成库,它在Java世界里被广泛应用,尤其是在Spring框架中。CGLIB是基于ASM(一个底层的Java字节码操作和分析框架)来实现的,它允许开发者在运行时...
总的来说,CGLib作为一个强大的字节码生成库,广泛应用于AOP(面向切面编程)、ORM框架(如Hibernate)、测试工具(如Mockito)等领域,提供了对Java类的灵活扩展和控制。正确理解和使用CGLib,能极大地提升开发效率...
三、CGLIB的应用 广泛的被许多AOP的框架使用,例如Spring AOP和dynaop。Hibernate使用CGLIB来代理单端single-ended(多对一和一对一)关联。 四、CGLIB的API 1、Jar包: cglib-nodep-2.2.jar:使用nodep包不需要...
CGLIB,全称为Code Generation Library,是一个强大的高性能的代码生成库,被广泛应用于Java世界,尤其是Spring框架中。它允许程序在运行时动态地创建Java对象并扩展已有类的功能。CGLIB是通过字节码技术实现的,而...
其被广泛应用于AOP框架(Spring、dynaop)中,用以提供方法拦截操作。Hibernate作为一个比较受欢迎的ORM框架,同样使用CGLIB来代理单端(多对一和一对一)关联(延迟提取集合使用的另一种机制)
Cglib是一个强大的、高性能的代码生成库,它在Java世界中被广泛应用,尤其是在动态代理和AOP(面向切面编程)领域。Cglib3.3.0是该库的最新版本,提供了两个jar包:`cglib-3.3.0.jar`和`cglib-nodep-3.3.0.jar`。 1...
CGlib,全称为Code Generation Library,是一个强大的Java字节码操控和动态代理框架。它主要为Java应用程序提供一种方式来动态地生成子类,从而扩展已有类的功能或为已有的类添加新的行为。CGlib是许多其他流行框架...
总结来说,CGlib是一个强大且灵活的Java代码生成库,它简化了字节码操作,为开发人员提供了动态创建类和方法的能力,尤其在实现动态代理和AOP场景中有着广泛的应用。理解并掌握CGlib的使用,对于提升Java开发效率和...