`
windywindy
  • 浏览: 168233 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

使用cglib创建代理类

阅读更多
import java.lang.reflect.Method;

import com.dao.impl.PersonDaoImpl;

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

//当代理对象没有实现接口,我们就可以 使用CGLIB生成代理 ,需要我们使用 cglib-nodep-2.1_3.jar
public class CGlibProxyFactory implements MethodInterceptor {
	private Object targetObject;// 代理的目标对象

	public Object createProxyInstance(Object targetObject) {
		this.targetObject = targetObject;
		Enhancer enhancer = new Enhancer();// 该类用于生成代理对象
		enhancer.setSuperclass(this.targetObject.getClass());// 设置父类
		enhancer.setCallback(this);// 设置回调用对象为本身
		return enhancer.create();
	}

	public Object intercept(Object proxy, Method method, Object[] args,
			MethodProxy methodProxy) throws Throwable {
		PersonDaoImpl bean = (PersonDaoImpl) this.targetObject;  
        Object result = null;   
        if(bean.getUser()!=null){  
            try {  
                result = methodProxy.invoke(this.targetObject, args);;  
            } catch (RuntimeException e) {  
            } 
        }  
		return result;
	}
}
分享到:
评论

相关推荐

    cglib创建代理类.rar

    springAOP等框架中,大量用到代理技术; 两类代理技术: 1,java动态代理,见JDK文档或相关java书;...2.cglib创建代理类,比第一种更加简单,代理类和背代理类不需要实现共同接口。本例子就是cglib代理的例子,很简单

    java设计模式【之】Cglib动态代理【源码】【场景:帮爸爸买菜】

    创建被代理类、创建代理类、代理类内部聚合被代理类 * 2.创建返回代理类实例方法 Enhancer.create(object.getClass(), this); * (1.创建工具类,2.设置工具类的父类为被代理类 3.设计监听回调为当前this 4.return ...

    CGLIB动态代理+CGLIB动态代理完整代码

    CGLIB是一个基于ASM的字节码生成库,它允许我们在运行时对字节码进行修改和动态生成。...CGLIB体现的是继承思想,所以我们需要把代理类作为我们目标类的一个子类,也就是把目标类设置为父类,代理类去继承它。

    cgLib与JDK动态代理的用法

    按照代理的创建时期,代理类可以分为两种。 静态代理:由程序员创建或特定工具自动生成源代码,再对其编译。在程序运行前,代理类的.class文件就已经存在了。 动态代理:在程序运行时,运用反射机制动态创建而成。

    cglib.jar下载

    通常可以使用Java的动态代理创建代理,但当要代理的类没有实现接口或者为了更好的性能,CGLIB是一个好的选择。 二、CGLIB原理 CGLIB原理:动态生成一个要代理类的子类,子类重写要代理的类的所有不是final的方法。...

    cglib包及依赖汉cglib3.1和asm4.2

    JDK自从1.3版本开始,就引入了动态代理,并且经常被用来动态地创建代理。JDK的动态代理用起来非常简单,但它有一个限制,就是使用动态代理的对象必须实现一个或多个接口。如果想代理没有实现接口的继承的类,该...

    cglib-3.2.0.jar

    CGLIB是一个强大的高性能的代码生成包。它广泛的被许多AOP的框架使用,例如Spring AOP和dynaop,为他们提供方法的interception(拦截)。...它们都通过使用CGLIB来为那些没有接口的类创建模仿(mock)对象。

    JDK动态代理(AOP)使用及原理分析视频教程课件

    动态:在程序执行时,调用jdk提供的方法才能创建代理类的对象。jdk动态代理,必须有接口,目标类必须实现接口, 没有接口时,需要使用cglib动态代理。 动态代理可以在不改变原来目标方法功能的前提下, 可以在代理中...

    你必须会的 JDK 动态代理和 CGLIB 动态代理

    静态代理就是在程序运行之前,代理类字节码.class就已编译好,通常一个静态代理类也只代理一个目标类,代理类和目标类都实现相同的接口。 接下来就先通过 demo 进行分析什么是静态代理,当前创建一个 Animal 接口,...

    cglib,关于代理的一个jar

    CGLIB是一个功能强大,高性能的代码生成包。它为没有实现接口的类提供代理,为JDK的动态代理提供了很好...通常可以使用Java的动态代理创建代理,但当要代理的类没有实现接口或者为了更好的性能,CGLIB是一个好的选择。

    Spring框架+SpringAOP动态代理

    Spring 会使用 java.lang.reflect.Proxy 类来创建代理对象。 CGLIB 代理:用于代理没有实现接口的类或final类。CGLIB(Code Generation Library)是一个代码生成的类库,可以在运行时动态生成一个目标类的子类,并...

    Java动态代理方法详解.docx

    动态:在程序执行时,调用jdk提供的方法才能创建代理类的对象。 jdk动态代理,必须有接口,目标类必须实现接口, 没有接口时,需要使用cglib动态代理 1.知道动态代理能做什么 ? 可以在不改变原来目标方法功能的前提...

    基于java的企业级应用开发:JDK动态代理.ppt

    * * * * JDK动态代理 JDK动态代理 JDK动态代理是通过java.lang.reflect.Proxy 类来实现的,我们可以调用Proxy类的newProxyInstance()方法来创建代理对象。对于使用业务接口的类,Spring默认会使用JDK动态代理来实现...

    Spring3注解

    AOP(Aspect Orient Programming),也就是面向方面编程,作为面向对象编程的一种补充,专门用于...而动态代理则在运行时借助于 JDK 动态代理、CGLIB 等在内存中“临时”生成 AOP 动态代理类,因此也被称为运行时增强。

    java6string源码-dynamic-proxy:利用ASM、CGLIB、ByteBuddy、Javassist和JDKDynamicP

    通过使用运行时代码生成技术,您可以在不定义Class的情况下创建一个实现某些特定接口或扩展类的实例。 通过直接启动ProxyCreator实例,您可以获得利用 ASM、Javassist、ByteBuddy、CGLIB 和传统 JDK 动态代理的特定...

    SpringBoot下的SpringAOP-day04-源代码

    1.2 CGlib动态代理 1.2.1 CGLib特点说明 1.3 动态代理的作用 2 Spring中的AOP 2.1 AOP介绍 2.2 AOP中专业术语(难点) 2.3 AOP 入门案例 2.3.1 创建一个SpringBoot的module 2.3.1 导入jar包 2.3.2 项目工程结构 2.3.3 ...

    AOP面向切面编程.docx

    1.jdk动态代理:使用jdk中的Proxy,Method,InvocaitonHanderl创建代理对象,jdk动态代理要求目标类必须实现接口 2.cglib动态代理:第三方的工具库,创建代理对象,原理是继承。 通过继承目标类,创建子类,子类就是...

    spring.doc

    3.3.1使用类构造器实例化(默认无参数) 14 3.3.2使用静态工厂方法实例化(简单工厂模式) 14 3.3.3初始化(创建)bean时机 15 Lazy-init初始化bean的时机拓展: 15 3.4 Bean的作用域 16 Scope单例多例作用域拓展: 16 ...

    【源码:AopFk】如何使用 Java 编写一个简单的 AOP 框架

    标题: 如何使用 Java 编写一个简单的 AOP 框架 ...如何使用 AOP 框架来定义切点、通知、将切点和通知应用到 AOP 框架中,以及如何创建代理对象的方法。 适用人群: Java 程序员 软件工程师 架构师

    我的博客园

    并在SpringIoC容器中使用原型模式创建struts2框架中的每一个Action实例对象以及使用单例模式创建业务逻辑层接口实现类的实例对象。在业务逻辑层中使用SpringIoC容器中的AOP的cglib代理模式配置事务管理。 在数据库...

Global site tag (gtag.js) - Google Analytics