`
ledefe
  • 浏览: 5813 次
  • 性别: Icon_minigender_1
  • 来自: 福建
社区版块
存档分类
最新评论

简单的一个动态代理及Aop简单实践实例

    博客分类:
  • java
 
阅读更多
动态代理作用:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。


这里实例的实现主要是通过java.lang.reflect.Proxy类和java.lang.reflect.InvocationHandler接口来实现的,Proxy类主要用来获取动态代理对象,InvocationHandler接口用来约束调用者实现。


    代码如下:
 package com.ruixingsoft;

/**
 * 租房接口
 * 
 * @author ledefe
 * 
 */
public interface Rent {
    /**
     * 前往查看房子
     */
 public void View();

}

package com.ruixingsoft;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;

/**
 * 房屋中介
 * 
 * @author ledefe
 * 
 */
public class RentHandler implements InvocationHandler {
 private Object rentObj;

 public RentHandler(Object obj) {
  this.rentObj = obj;
 }

 public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
  System.out.println("中介:房屋信息已发布!");
  method.invoke(rentObj, args);
  System.out.println("中介:客户已接待完!");
  return null;
 }

}



package com.ruixingsoft;

/**
 * A客户-租房
 * 
 * @author ledefe
 * 
 */
public class ARentImpl implements Rent {

 public void View() {

  System.out.println("A前往查看房子!");
 }

}


package com.ruixingsoft;

import java.lang.reflect.Proxy;

public class RentTest {
 /**
  * 动态代理测试
  * 
  * @param args
  */
 public static void main(String[] args) {
  // xx的代理接口:A客户
  Rent rent = new ARentImpl();
  // xx的代理实现类:房屋中介
  RentHandler handler = new RentHandler(rent);
  // 实例化一个xx接口的代理
  Rent proxy = (Rent) Proxy.newProxyInstance(rent.getClass().getClassLoader(), rent.getClass().getInterfaces(), handler);
  proxy.View();
 }

}

测试结果:
  • 中介:房屋信息已发布!
  • A前往查看房子!
  • 中介:客户已接待完!



分享到:
评论

相关推荐

    动态代理(AOP)简单例子

    动态代理(Aspect-Oriented Programming,AOP)是面向切面编程的一种编程范式,它主要用来解决传统面向对象编程中难以处理的横切关注...这个例子对于初学者来说是一个很好的实践,有助于深入理解AOP和动态代理的概念。

    用Java动态代理实现AOP

    下面是如何使用Java动态代理实现AOP的一个简化的步骤: 1. **定义业务接口**:例如`BusinessInterface`,它包含了需要进行操作的方法,如`processBusiness()`。 2. **实现业务逻辑**:`BusinessObject`类实现了`...

    简单spring aop 例子

    现在,我们来看如何创建一个简单的Spring AOP例子: 1. **定义切面(Aspect)**:切面是包含通知(Advice)和切入点(Pointcut)的类。通知定义了要执行的逻辑,切入点定义了何时执行。例如,我们可以创建一个名为`...

    spring aop权限小实例

    例如,我们可以创建一个`AuthorizationAspect`类,它有一个`@Before`注解的方法,该方法会在目标方法执行前进行权限检查。 ```java import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang....

    一个简单的java动态代理的实例

    Java动态代理是Java提供的一种在运行时创建代理对象的技术,主要由`java.lang.reflect.Proxy`类和`java.lang....通过理解和实践这个简单的实例,你可以进一步探索如何在实际项目中应用动态代理,以实现更复杂的功能。

    Spring AOP入门及其实例讲解、下载

    这个示例可能包括了一个简单的业务服务类、一个切面类以及相关的测试类。通过分析这些文件,我们可以更深入地理解如何在实际项目中应用Spring AOP。 总结来说,Spring AOP提供了一种优雅的方式,让我们能够将横切...

    详解使用Java原生代理实现AOP实例共4页.pdf.zi

    Java原生代理(Java Native Interface...虽然Java原生代理在功能上比专门的AOP框架如Spring AOP有限,但它对于理解AOP原理和实践是一个很好的起点。在实际开发中,根据项目需求和性能考虑,可以选择合适的方式实现AOP。

    spring aop实例

    另一个文件"testaop"是一个MyEclipse项目,包含了实际的Spring AOP应用实例。这个项目可以帮助你更好地理解如何在实际项目中集成和使用Spring AOP。你可以直接导入此项目到MyEclipse中,运行并观察AOP如何工作,例如...

    spring 3.0 aop 实例

    通过以上知识,我们可以创建一个简单的Spring AOP实例,例如创建一个日志切面,记录每个服务方法的执行时间: ```java @Aspect @Component public class LoggingAspect { @Before("execution(* ...

    Spring AOP编程实例

    源码中可能包含了一个简单的Spring Boot项目,其中包含了AOP切面的实现。`.classpath`和`.project`文件是Eclipse项目的元数据,用于项目构建和设置;`src`目录包含了源代码,可能有切面类和业务逻辑;`lib`目录可能...

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

    这个方法需要三个参数:一个类加载器、一个接口数组和一个InvocationHandler实例。InvocationHandler是动态代理的核心,它定义了方法调用的处理逻辑。 4. **InvocationHandler接口** - `InvocationHandler`接口...

    spring aop 附带测试实例

    在Spring AOP中,一个切面通常由一个或多个通知(advises)和一个切点(join point)定义组成。 2. **通知(Advice)**:通知是在特定连接点执行的代码块,例如前置通知(before)、后置通知(after)、环绕通知...

    简易的AOP框架

    在Java中,Spring框架是最著名的AOP实现之一,但这里我们讨论的是一个简易的AOP框架,它可以帮助理解AOP的基本概念和工作原理。 该简易AOP框架包含以下几个关键组件: 1. **配置文件**:这是定义切面(aspect)和...

    spring-aop实例demo

    在这个实例中,我们看到了如何在Spring 3.2.8中使用AOP进行简单的日志记录。这只是AOP功能的冰山一角,实际上,你可以通过切面来处理更复杂的场景,如事务管理、性能监控、安全控制等。切记,合理地使用AOP可以极大...

    spring aop学习实例

    6. **AOP实战**: 包含一个简单的日志记录例子,展示了如何在方法调用前后添加日志输出,以及在出现异常时进行处理。 通过这个学习实例,你可以动手实践,理解Spring AOP的工作原理,并学习如何将其应用于实际项目中...

    Java实现aop案例

    2. **Spring AOP简介**:讲解Spring框架如何提供AOP支持,包括基于代理的AOP(JDK动态代理和CGLIB代理)和基于注解的AOP。 3. **创建切面**:演示如何定义一个切面类,该类包含通知方法,这些方法将在特定的连接点...

    Spring AOP 入门实例1

    以下是一个简单的Spring AOP入门实例步骤: 1. 首先,定义一个切面类,包含通知方法。例如,一个简单的日志切面: ```java @Aspect @Component public class LoggingAspect { @Before("execution(* com.example*...

    手写简单实现ioc、aop事务demo

    在这个“手写简单实现ioc、aop事务demo”中,我们将探讨如何通过工厂模式和动态代理来实现这些概念。 首先,让我们了解IOC的核心思想。在传统的编程中,对象创建和管理的控制权在程序员手中,而IOC则是将这种控制权...

    [干货][EMIT]千行代码实现代理式AOP+属性的自动装配

    在AOP中,我们可以创建一个代理类,该类会在调用目标方法前后执行额外的操作。例如,我们可以在方法调用前后添加日志记录或事务控制的代码。 以下是一些关键的Emit操作: 1. `TypeBuilder`:用于创建动态类型。 2....

Global site tag (gtag.js) - Google Analytics