`
wanxiaotao12
  • 浏览: 476783 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

spring aop、JDK代理实现机制

 
阅读更多

AOP的实现机制

 

生成的动态代理类:

1、将Invocationhandler的实现类作为代理类的成员变量

<!--EndFragment-->
2、代理方法, 先获取目标方法,然后执行InvocationHandler实现的invoke方法
 
public class ProxyBusiness implements IBusiness, IBusiness2 { 
//将Invocationhandler的实现类作为代理类的成员变量
private LogInvocationHandler h; 

@Override 
public void doSomeThing2() { 
    try { 
        Method m = (h.target).getClass().getMethod("doSomeThing", null); 
        h.invoke(this, m, null); 
    } catch (Throwable e) { 
        // 异常处理(略) 
    } 
} 

@Override 
public boolean doSomeThing() { 
    try {
       //取得目标对象的方法,然后将methoed对象传到invocationHandler.invoke()方法
       Method m = (h.target).getClass().getMethod("doSomeThing2", null);
       //在invoke的方法中,可以在目标方法前增加, 也可以目标方法后增加 
       return (Boolean) h.invoke(this, m, null); 
    } catch (Throwable e) { 
        // 异常处理(略) 
    } 
    return false; 
} 

public ProxyBusiness(LogInvocationHandler h) { 
    this.h = h; 
} 

//测试用 
public static void main(String[] args) { 
    //构建AOP的Advice 
    LogInvocationHandler handler = new LogInvocationHandler(new Business()); 
    new ProxyBusiness(handler).doSomeThing(); 
    new ProxyBusiness(handler).doSomeThing2(); 
} 
} 

 

分享到:
评论

相关推荐

    反射实现 AOP 动态代理模式(Spring AOP 的实现原理)

    Spring AOP支持不同的代理策略,包括JDK动态代理和CGLIB代理。如果被代理的类没有实现接口,Spring AOP会采用CGLIB来生成代理对象。CGLIB(Code Generation Library)是一个开源的代码生成库,它允许运行时在内存中...

    Spring AOP实现机制

    **Spring AOP 实现机制详解** Spring AOP(面向切面编程)是Spring框架的核心特性之一,它允许程序员在不修改源代码的情况下,通过“切面”来插入额外的业务逻辑,如日志、事务管理等。AOP的引入极大地提高了代码的...

    Spring-AOP-JDK动态代理

    以下是使用JDK动态代理实现Spring AOP的步骤: 1. **定义切面(Aspect)**:切面是AOP的核心,它封装了横切关注点。在Spring中,可以通过实现`org.aspectj.lang.annotation.Aspect`接口或者使用注解`@Aspect`来定义...

    JDK动态代理 spring aop 的原理

    Spring AOP则是在Spring框架中对AOP概念的实现,它利用了JDK动态代理或CGLIB(字节码增强)来实现。Spring AOP的主要目标是分离关注点,将非业务逻辑(如日志、事务管理)从核心业务代码中解耦出来。以下是Spring ...

    spring aop支持jdk1.7的jar

    标题提到的"spring aop支持jdk1.7的jar",意味着这些库文件是专门为Java 7版本设计的,确保在使用Java 7环境时能够正常运行Spring AOP。在Java 7中,虽然没有引入与AOP直接相关的重大更新,但Spring AOP框架可以充分...

    springAop默认代理方式.zip

    在Spring AOP中,代理是实现切面的关键机制,它在目标对象与实际调用之间起到了中介作用,让我们来详细探讨Spring AOP的默认代理方式。 1. **静态代理**:Spring AOP 提供了两种代理方式,一种是静态代理,另一种是...

    Spring Aop的底层实现技术 --- Jdk动态代理原理

    Spring AOP 的底层实现技术 --- Jdk 动态代理原理 JDK 动态代理是 Spring AOP 的底层实现技术,允许开发者在运行期创建接口的代理实例。在 JDK 1.3 以后,JDK 动态代理技术提供了实现 AOP 的绝好底层技术。JDK 动态...

    spring之AOP(动态代理)

    总结一下,Spring的AOP机制通过JDK动态代理和CGLIB动态代理提供了强大的横切关注点管理功能。开发者可以轻松地定义切面和通知,以实现如日志、事务管理等功能,同时保持核心业务代码的清晰和简洁。在Spring Boot项目...

    死磕Spring之AOP篇 - Spring AOP两种代理对象的拦截处理(csdn)————程序.pdf

    在 Spring 中,AOP 的实现主要依赖于代理模式,有两种代理方式:JDK 动态代理和 CGLIB 动态代理。 JDK 动态代理是基于接口的,它要求被代理的目标对象必须实现至少一个接口。Spring 使用 `java.lang.reflect.Proxy`...

    springAop的配置实现

    - **代理(Proxy)**:Spring AOP通过代理模式来实现切面功能,有JDK动态代理和CGLIB代理两种方式。 **2. JDK 动态代理** - 当目标类实现了接口时,Spring AOP会选择使用JDK动态代理。它会生成一个实现了目标类所有...

    spring jdk动态代理

    总结来说,Spring AOP中的JDK动态代理机制是一种高效且灵活的实现方式,它允许我们在不修改原始代码的前提下,通过代理对象添加额外的功能。这使得我们能够更专注于业务逻辑,而不是关注点的实现。通过理解和掌握这...

    springAOP配置动态代理实现

    综上所述,通过理解Spring AOP的配置和动态代理机制,我们可以灵活地在项目中添加横切关注点,提升代码的模块化和可维护性。在实际开发中,结合使用XML配置、注解配置以及适当的动态代理策略,可以使AOP功能更好地...

    spring_aop之JDK的动态代理

    总结来说,Spring AOP通过JDK的动态代理机制,为实现了接口的目标对象创建代理,使得我们能够在不修改原始代码的情况下,方便地添加额外的功能,如日志、事务控制等。这种方法尤其适合于那些已经定义了清晰接口的...

    Spring AOP的底层实现技术

    Spring AOP基于两种代理机制实现:JDK动态代理和CGLIB代理。JDK动态代理适用于实现了接口的目标对象,通过反射机制创建一个代理类来拦截方法调用。而CGLIB是在运行时动态生成一个目标类的子类,从而实现对方法的...

    Aop jdk proxy实现小例子

    JDK Proxy是Java提供的一种动态代理机制,它是实现AOP的一种方式。通过JDK Proxy,我们可以在运行时创建一个接口的实现类,并在调用接口方法时插入自定义的处理逻辑,这就是AOP的核心思想——“织入”(Weaving)。...

    Spring AOP 16道面试题及答案.docx

    JDK代理适用于那些实现了接口的类,而CGLIB代理则适用于没有实现接口的类。 引介(Introduction)是Spring AOP的一个特性,允许在通知对象中声明并实现它们原本未实现的额外接口。通过`@DeclareParents`注解可以...

    从JDK动态代理到spring AOP

    它提供了一种更高级的动态代理机制,不仅可以基于JDK动态代理,还可以基于CGLIB库生成字节码实现代理。AOP允许开发者定义“切面”(Aspect),切面封装了关注点,如日志、事务、安全检查等,使得这些功能可以独立于...

    Spring框架中JDK动态代理和cglib动态代理

    在 Spring AOP 框架中,默认情况下,Spring 会选择使用 JDK 动态代理,但是如果目标对象没有实现接口,Spring 就会选择使用 CGLIB 动态代理。这种机制可以确保 Spring AOP 框架可以代理任何类型的对象,无论它是否...

    模拟spring aop【一】基于jdk动态代理实现的aop

    本篇文章将探讨如何通过JDK动态代理实现Spring AOP的基础知识。 首先,我们要理解什么是JDK动态代理。在Java中,动态代理机制允许我们在运行时创建一个实现了特定接口的新类。这个新类的实例可以代理目标对象,执行...

    简单spring aop 例子

    JDK代理用于实现了接口的类,而CGLIB代理则用于没有接口或不希望使用接口的类。代理对象在调用目标方法时会执行切面逻辑。 2. **织入**:织入是将切面与应用程序代码结合的过程。Spring支持三种织入时机:编译时、...

Global site tag (gtag.js) - Google Analytics