`
sillycat
  • 浏览: 2552579 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

AOP Practice with cglib

    博客分类:
  • JAVA
阅读更多
AOP Practice with cglib

1. Add jar packages to our projects
<!-- commons -->
<dependency org="cglib" name="cglib" rev="2.2"/>
<dependency org="asm" name="asm-all" rev="3.3" />

2. My demo class HelloWorld.java:
package com.sillycat.cglibdemo;


public class HelloWorld {

public static void main(String[] args){
new HelloWorld().sayHello();

}
public void sayHello(){
System.out.println("hello ");
}
}

My proxy class is HellowWorldProxy.java:
package com.sillycat.cglibdemo;

import java.lang.reflect.Method;

import net.sf.cglib.proxy.Enhancer;
import net.sf.cglib.proxy.MethodInterceptor;
import net.sf.cglib.proxy.MethodProxy;

public class HelloWorldProxy implements MethodInterceptor {

@Override
public Object intercept(Object object, Method arg1, Object[] args,
MethodProxy methodProxy) throws Throwable {
System.out.println(">>>MethodInterceptor start...");
Object result = methodProxy.invokeSuper(object, args);
System.out.println(result);
System.out.println(">>>MethodInterceptor ending...");
return null;

}

public static void main(String[] args) {
HelloWorld proxyTarget = (HelloWorld) createProxy(HelloWorld.class);
proxyTarget.sayHello();
}

public static Object createProxy(Class<?> targetClass) {
Enhancer enhancer = new Enhancer();
enhancer.setSuperclass(targetClass);
enhancer.setCallback(new HelloWorldProxy());
return enhancer.create();
}

}

I can run my demo and get the result on console:
>>>MethodInterceptor start...
hello
null
>>>MethodInterceptor ending...


分享到:
评论

相关推荐

    springAop.rar_AOP java_cglib_spring aop

    CGLIB是一个强大的高性能的代码生成库,它在许多AOP的实现中被用到,比如Spring AOP。CGLIB使用字节码技术为一个类创建子类,并在子类中拦截方法调用,从而实现代理。CGLIB生成的子类是动态的,因此在编译时并不存在...

    spring_aop_cglib的实现方式

    在Spring AOP(面向切面编程)中,CGLIB是一个重要的动态代理库,它用于在运行时创建子类以实现对目标对象的代理。CGLIB是针对那些不支持接口代理(例如Java中的final类)的情况而设计的。下面我们将深入探讨Spring ...

    AOP使用CGLIB实现AOP功能

    Spring AOP实现方法之一:CGLIB 实现AOP功能

    使用JDK中的Proxy技术实现AOP功能与使用CGLIB实现AOP功能

    本篇将深入探讨如何使用JDK的动态代理和CGLIB库来实现Spring中的AOP功能。 首先,我们来看JDK中的Proxy技术。JDK Proxy是Java提供的一种动态代理机制,它允许我们在运行时创建一个实现了特定接口的新类。这个新类...

    AOP、CGLIB

    **AOP(面向切面编程)** 面向切面编程(Aspect Oriented...以上就是关于"AOP、CGLIB"的知识点介绍,Spring框架中的AOP和CGLIB结合使用,为Java开发者提供了强大的代码组织和管理工具,让软件开发变得更加高效和灵活。

    基于Cglib简单实现Spring体系(Ioc+Aop+Mvc)

    基于Cglib简单实现Spring体系(Ioc+Aop+Mvc)基于Cglib简单实现Spring体系(Ioc+Aop+Mvc)基于Cglib简单实现Spring体系(Ioc+Aop+Mvc)基于Cglib简单实现Spring体系(Ioc+Aop+Mvc)基于Cglib简单实现Spring体系(Ioc+Aop+Mvc)...

    AOP-CGLIB学习-实现简单的注解权限系统

    标题中的"AOP-CGLIB学习-实现简单的注解权限系统"指的是使用Spring的面向切面编程(AOP)特性,结合CGLIB库来创建一个基于注解的权限控制系统。在这个系统中,通过CGLIB动态代理技术,可以对带有特定注解的方法进行...

    cglib及其依赖包

    CGLib,全称为Code Generation Library,是一个强大的高性能的代码生成库,它在Java世界中被广泛应用,尤其是在动态代理和AOP(面向切面编程)领域。这个库的主要功能是能够在运行时动态创建类或者增强已有类的功能...

    AOP之JDK动态代理和CGLib动态代理

    Spring框架是AOP实现的一个典范,它提供了两种主要的动态代理方式:JDK动态代理和CGLib动态代理。 **JDK动态代理**: JDK动态代理基于Java的反射API实现,适用于接口代理。当目标对象实现了至少一个接口时,Spring...

    Spring AOP 中 JDK 和 CGLib 动态代理哪个更快?.docx

    Spring AOP 中 JDK 和 CGLib 动态代理哪个更快?

    SpringMVC精品资源--手写Spring,支持ioc(三级缓存)、aop(cglib)、内嵌tomcat.zip

    在这个"SpringMVC精品资源--手写Spring,支持ioc(三级缓存)、aop(cglib)、内嵌tomcat"的压缩包中,包含了学习和实践Spring MVC以及其相关核心概念的宝贵资料。我们将深入探讨其中的三个关键知识点:IOC(控制反转)、...

    cglib aop spring 动态代理

    静态代理--不适合企业开发,适合初学者理解代理。... 3.cglib用于AOP,jdk中的proxy必须基于接口,cglib却没有这个限制。 spring 的AOP功能中 会根据目标类是否实现了接口来判断使用 jdk Proxy还是cglib

    关于Spring AOP,除了动态代理、CGLIB,你还知道什么?

    - Spring AOP主要通过动态代理来实现,包括JDK动态代理和CGLIB。对于接口实现类,Spring使用JDK动态代理;对于没有接口的类,使用CGLIB生成子类来实现切面。 - **Pointcut**在Spring中通过`org.springframework....

    cglib2.2.jar

    例如,在Spring AOP中,CGLIB被用来创建代理对象,以便在方法调用前后插入额外的逻辑,如事务管理、性能监控等。这个库通常依赖于ASM库,一个用于生成和读取Java字节码的底层框架。 `cglib-nodep-2.2.jar` 是CGLIB...

    spring学习之七“AOP使用spring静态配置文件(CGLIB)”

    本篇将深入探讨如何使用Spring的静态配置文件结合CGLIB库来实现AOP。CGLIB是一个代码生成库,它被Spring用来动态地创建代理对象,以实现代理模式,进而支持AOP。 首先,我们需要理解AOP的核心概念。切面(Aspect)...

    使用cglib演示动态代理时用到的jar包 aop 动态代理

    动态代理是实现AOP的一种方式,而在Java中,CGLIB(Code Generation Library)是一个常用的库,专门用于创建子类动态代理。下面我们将详细探讨AOP、动态代理以及CGLIB的相关知识点。 首先,AOP的核心概念是“切面”...

    JavaEE CGLIB字节码增强方式实现AOP编程

    JavaEE CGLIB字节码增强技术是实现面向切面编程(AOP)的一种常见方法。在JavaEE应用中,AOP允许开发者定义“切面”,这些切面封装了跨越多个对象的横切关注点,如日志、事务管理等。CGLIB(Code Generation Library...

    AspectJ in Action: Enterprise AOP with Spring Applications

    ### AspectJ in Action: Enterprise AOP with Spring Applications #### 关键知识点概述 1. **Spring-AspectJ集成:**本书重点介绍了Spring框架与AspectJ相结合的技术优势及其在企业级应用中的强大功能。 2. **...

    cglib.jar下载

    广泛的被许多AOP的框架使用,例如Spring AOP和dynaop。Hibernate使用CGLIB来代理单端single-ended(多对一和一对一)关联。 四、CGLIB的API 1、Jar包: cglib-nodep-2.2.jar:使用nodep包不需要关联asm的jar包,jar...

Global site tag (gtag.js) - Google Analytics