`

java 动态代理简单实现

    博客分类:
  • jdk
阅读更多

dynamicproxy.service.HelloService

package dynamicproxy.service;

public interface HelloService {
	public void sayHello();
}

 

dynamicproxy.service.impl.HelloServiceImpl

package dynamicproxy.service.impl;

import dynamicproxy.service.HelloService;

public class HelloServiceImpl implements HelloService {

	@Override
	public void sayHello() {
		System.out.println("hello everyone ... ");

	}

}

 

dynamicproxy.handler.LogHandler

package dynamicproxy.handler;

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

public class LogHandler implements InvocationHandler {

	private Object target = null;
	
	public LogHandler(Object target) {
		this.target = target;
	}

	private void doBefore(){
		System.out.println("do before ... ");
	}
	
	private void doAfter(){
		System.out.println("do after ... ");
	}
	
	
	@Override
	public Object invoke(Object proxy, Method method, Object[] args)
			throws Throwable {
	
		doBefore();
		
		Object res = method.invoke(target, args);
		
		doAfter();
		
		return res;
	}

}

 

dynamicproxy.test.Main

package dynamicproxy.test;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Proxy;

import dynamicproxy.handler.LogHandler;
import dynamicproxy.service.HelloService;
import dynamicproxy.service.impl.HelloServiceImpl;

public class Main {

	public static void main(String[] args) {
		HelloService target = new HelloServiceImpl();
		
		InvocationHandler handler = new LogHandler(target);
		
		HelloService helloService = (HelloService) Proxy.newProxyInstance(target.getClass().getClassLoader(), target.getClass().getInterfaces(), handler);
		
		helloService.sayHello();

	}

}

 

 

分享到:
评论

相关推荐

    Java动态代理两种实现方式

    Cglib是基于ASM库来实现的,可以为非final类生成子类并覆盖方法,从而实现动态代理。 #### 1. 引入Cglib库 在项目中引入Cglib库,如使用Maven,可以在pom.xml中添加依赖: ```xml <groupId>cglib <artifactId>...

    用Java动态代理实现AOP

    在本文中,我们将通过一个简单的例子来展示如何使用Java动态代理实现AOP。首先,我们定义了一个business接口和一个实现类BusinessObject,BusinessObject中包含了商业逻辑代码和日志记录代码。 ```java public ...

    JAVA实现动态代理的简单流程

    在深入探讨Java动态代理的实现过程之前,我们首先需要理解动态代理的基本概念及其在Java中的应用价值。动态代理,顾名思义,是在运行时动态创建代理对象的一种机制,它无需在编译期就确定代理类的具体实现,而是通过...

    java动态代理demo

    通过这个简单的Java动态代理demo,你可以了解到如何在实际项目中利用动态代理进行功能扩展,同时避免了为每个接口编写单独的代理类。这种技术可以极大地提高代码的可复用性和可维护性,是Java开发中一个强大的工具。

    java动态代理实例

    在这个实例中,我们将深入探讨Java动态代理的核心概念,以及如何利用它来实现拦截器模式。 首先,我们需要了解Java动态代理的基本原理。在Java中,动态代理主要通过`java.lang.reflect.Proxy`类和`java.lang....

    java动态代理实现详解

    Java 动态代理是Java平台提供的一种强大的工具,它允许我们在运行时动态生成代理类,这些代理类可以实现一组指定的接口,同时还能在方法调用前后添加自定义的行为。这种机制大大简化了面向切面编程(AOP)和事件监听...

    java 动态代理 简单实例

    在Java中,动态代理主要通过两个类来实现:`java.lang.reflect.Proxy` 和 `java.lang.reflect.InvocationHandler`。`Proxy` 类用于生成代理对象,而`InvocationHandler`接口定义了代理对象的方法调用应该如何处理。 ...

    java动态代理模拟实现

    总结起来,Java动态代理提供了一种在运行时创建代理对象的机制,通过 `Proxy` 类和 `InvocationHandler` 接口,我们可以灵活地在方法调用前后插入自定义的行为,实现诸如日志、事务等附加功能,极大地增强了代码的可...

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

    在Java中,动态代理主要通过`java.lang.reflect.Proxy`类和`java.lang.reflect.InvocationHandler`接口来实现。 **AOP概述** 面向切面编程(Aspect Oriented Programming,AOP)是一种编程范式,旨在将横切关注点...

    基于Java动态代理和反射机制实现ORM

    Java中的`java.lang.reflect.Proxy`类和`java.lang.reflect.InvocationHandler`接口提供了实现动态代理的能力。反射则是Java提供的一种能够在运行时分析类、接口、字段和方法等元数据的技术,通过`java.lang.Class`...

    java动态代理源代码

    在Java中,静态代理和动态代理是两种常见的实现方式。动态代理则是在运行时生成代理类,无需预先编写代理类的源代码,因此更具有灵活性。 **二、Proxy类** Proxy类是Java动态代理的核心,它提供了创建动态代理对象...

    Java代理模式Java动态代理

    ### Java代理模式与Java动态代理详解 #### 一、代理模式概述 代理模式是一种软件设计模式,它在客户端和目标对象之间提供了一种间接层。这种模式的主要目的是控制客户端对目标对象的访问,并且可以在不修改原有...

    Java动态代理helloworld

    本篇文章将深入探讨Java动态代理的概念、原理以及如何通过一个简单的"Hello, World!"示例来理解它。 动态代理,顾名思义,是在程序运行时动态地生成代理对象。与静态代理(编译时已知)相比,动态代理更加灵活,...

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

    在这个简单的Java动态代理实例中,我们将探讨如何利用这两个核心组件来实现代理功能。 首先,我们需要理解代理模式的基本概念。代理模式是一种设计模式,它为其他对象提供一种代理以控制对这个对象的访问。在Java中...

    java-jdk动态代理的实现demo

    在Java中,JDK提供了一个`java.lang.reflect.Proxy`类和一个`java.lang.reflect.InvocationHandler`接口,它们是实现动态代理的关键。Proxy类用于创建代理对象,而InvocationHandler接口定义了处理方法调用的逻辑。 ...

    用Java动态代理实现委托模式

    在Java中,动态代理是实现委托模式的一种常见方式,它允许我们在运行时创建具有特定接口的代理类实例。下面我们将详细探讨如何使用Java动态代理实现委托模式,以及相关的源码和工具应用。 首先,理解委托模式的基本...

    Java动态代理案例演示代码

    Java动态代理是Java语言提供的一种强大的机制,它允许在运行时创建具有特定接口的代理类对象,这些代理类对象能够对方法调用进行拦截和增强。动态代理在很多场景下非常有用,例如AOP(面向切面编程)、事件监听、...

    JAVA静态代理和动态代理

    Java提供了两种主要的代理实现方式:静态代理和动态代理。 **静态代理** 静态代理是程序员手动创建代理类并实现与目标对象相同的接口。代理类和目标类都必须实现相同的接口,这样代理类就可以在调用目标对象方法的...

    基于Java动态代理的AOP实现.zip

    本项目旨在通过Java的动态代理技术实现面向切面编程(AOP),涵盖了静态代理、JDK动态代理、CGLIB动态代理、AspectJ以及基于instrumentation的动态代理等多种实现方式。通过这些实现方式,可以在不修改原有代码的...

    Java静态代理与动态代理demo

    Java的 `java.lang.reflect.Proxy` 类和 `java.lang.reflect.InvocationHandler` 接口可以用来实现动态代理。 ```java // 动态代理示例 interface Service { void doSomething(); } // InvocationHandler 实现 ...

Global site tag (gtag.js) - Google Analytics