`

java面向切面编程,动态代理

阅读更多
//转载别人
public interface Hello {

    void sayHello(String to);
  
    void print(String p); 
 
}

public class HelloImpl implements Hello {
    
    public void sayHello(String to) {
        System.out.println("Say hello to " + to);
    }
    
    public void print(String s) {
        System.out.println("print : " + s);
    }
    
}

public class LogHandler implements InvocationHandler {
    
    private Object dele;
    
    public LogHandler(Object obj) {
        this.dele = obj;
    }
    
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        doBefore();
        //在这里完全可以把下面这句注释掉,而做一些其它的事情
        Object result = method.invoke(dele, args);
        after();
        return result;
    }
    
    private void doBefore() {
        System.out.println("before....");
    }
    
    private void after() {
        System.out.println("after....");
    }
}

public class ProxyTest {

    public static void main(String[] args) {
        HelloImpl impl = new HelloImpl();
        LogHandler handler = new LogHandler(impl);
        //这里把handler与impl新生成的代理类相关联
        Hello hello = (Hello) Proxy.newProxyInstance(impl.getClass().getClassLoader(), impl.getClass().getInterfaces(), handler);
        
        //这里无论访问哪个方法,都是会把请求转发到handler.invoke
        hello.print("All the test");
        hello.sayHello("Denny");
    }

}


before....
print : All the test
after....
before....
Say hello to Denny
after....

 

分享到:
评论

相关推荐

    面向切面编程

    面向切面编程的核心思想是在运行时,动态地将代码切入到类的指定方法或位置上,以此来处理那些在多个业务逻辑中重复出现的功能。 #### AOP与OOP的关系 面向对象编程(Object-Oriented Programming,简称OOP)通过...

    面向切面编程 动态代理的经典例子

    总之,这个例子展示了如何通过面向切面编程,利用动态代理和拦截器来增强代码的功能,同时保持代码的清晰和模块化。而HibernateTemplate则提供了对Hibernate的便捷访问,帮助我们处理数据持久化。通过深入学习这些...

    java面向切面编程

    面向切面编程(AOP,Aspect Oriented Programming)是Java编程中的一种重要概念,它旨在提高代码的可重用性和可维护性。AOP通过将关注点分离,使得业务逻辑和系统服务(如日志、事务管理等)可以独立发展,从而降低...

    面向切面编程的介绍有优点

    面向切面编程(Aspect-Oriented Programming,简称 AOP)是一种编程范式,它通过将横切关注点(cross-cutting concerns)从业务逻辑中分离出来,并将其封装为独立的组件,来降低软件系统的耦合度。AOP 的核心思想是...

    使用动态代理面向切面编程(AOP)

    面向切面编程(AOP)是一种编程范式,主要用于处理...通过学习和实践面向切面编程和动态代理,开发者可以更高效地组织代码,提高代码的可维护性和可扩展性。在Spring框架中,AOP功能的使用让这些目标变得更加容易实现。

    spring使用动态代理面向切面编程(AOP) xml

    在Spring框架中,面向切面编程(AOP)是一种强大的设计模式,它允许开发者将关注点分离,将横切关注点(如日志、事务管理、权限检查等)与核心业务逻辑解耦。本篇文章将深入探讨如何使用Spring的动态代理机制实现AOP...

    Spring-aop面向切面编程实例

    面向切面编程(Aspect-Oriented Programming,AOP)是Spring框架的核心特性之一,它提供了一种优雅的方式来处理系统的横切关注点,如日志、事务管理、性能监控和权限控制等。在Spring中,AOP主要通过代理模式实现,...

    sping面向切面编程简单示例

    sping面向切面编程简单示例,希望给予初学者帮助

    详解面向切面编程

    面向切面编程(Aspect Oriented Programming,AOP)是一种编程范式,旨在将关注点分离,使得系统中的各个部分能够更专注于自己的核心职责,而将横切关注点(如日志、事务管理、安全检查等)抽取出来独立处理。...

    AOP面向切面编程总结

    ### AOP面向切面编程详解 #### 一、AOP概览 AOP(Aspect-Oriented Programming,面向切面编程)是一种编程思想和技术,它作为OOP(面向对象编程)的一种补充,主要解决了OOP在处理横切关注点方面的不足。在传统的...

    面向切面编程PPT(Java语言)

    面向切面编程(Aspect-Oriented Programming,AOP)是一种编程范式,旨在将横切关注点(如日志、事务管理和安全性)从核心业务逻辑中分离出来,以提高代码的可读性和可维护性。Java语言中的AOP是通过Spring框架等库...

    使用java动态代理技术实现简单的AOP切面编程实例

    Java 动态代理技术是Java平台提供的一种强大的编程机制,它允许我们在运行时创建具有特定接口的代理对象,这些代理对象可以对方法调用进行拦截和处理,这正是AOP(面向切面编程)的核心思想。在Java中,动态代理主要...

    Java Spring AOP 面向切面编程的4种实现

    动态代理是一种在运行时创建代理对象的技术,通常用于实现AOP(面向切面编程)中的横切关注点,比如日志、性能监控等。以下是几种常见的动态代理实现: JDK动态代理: Java通过java.lang.reflect.Proxy类提供了一种...

    Spring面向切面编程AOP

    面向切面编程(AOP,Aspect Oriented Programming)是Spring框架中的一个重要特性,它提供了一种模块化和声明式的方式来处理程序中的横切关注点,如日志、事务管理、安全控制等。AOP的核心概念包括切面、通知、连接...

    AOP_使用spring框架进行面向切面编程

    面向切面编程(AOP)是一种编程范式,它旨在减少代码中的重复部分,特别是那些与核心业务逻辑无关但又必须处理的交叉关注点,如日志、事务管理、安全控制等。Spring框架是Java领域中实现AOP的常用工具,它通过提供...

    JAVA Spring AOP面向切面编程笔记

    JAVA Spring AOP面向切面编程笔记

    Spring Aop面向切面的java代码

    总结一下,Spring AOP提供了JDK动态代理和CGLIB代理两种方式来实现面向切面编程,通过这两种方式,我们可以方便地在不修改原始业务代码的前提下,添加额外的功能,如日志、事务控制等。`SprigAopJdk`和`...

    java-AOP面向切面编程

    面向切面编程(AOP)是Java开发中的一个重要概念,它是对传统的面向对象编程(OOP)的一个补充。AOP的主要目标是将关注点分离,让系统中的核心业务逻辑与系统服务(如日志、事务管理等)解耦。通过AOP,开发者可以将...

    面向切面 aop

    面向切面编程(AOP,Aspect Oriented Programming)是一种编程范式,旨在将系统中的关注点分离,使得代码更加模块化,易于维护和扩展。在传统的面向对象编程(OOP)中,业务逻辑往往与日志、事务管理、权限控制等横...

Global site tag (gtag.js) - Google Analytics