`
Aga
  • 浏览: 218543 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

java dynamic proxy

    博客分类:
  • J2SE
阅读更多
package proxy.cxz.org;

import java.util.Date;

public interface HelloService {
	public String echo(String msg);
	public Date getTime();
}

package proxy.cxz.org;

import java.util.Date;

public class HelloServiceImpl implements HelloService {

	public String echo(String msg) {
		return "echo: " + msg;
	}

	public Date getTime() {
		return new Date();
	}

}

package proxy.cxz.org;

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

public class HelloServiceProxyFactory {
	public static HelloService getHelloServiceProxy(
			final HelloService helloService) {
		InvocationHandler handler = new InvocationHandler() {
			public Object invoke(Object proxy, Method method, Object[] args)
					throws Throwable {
				System.out.println("before calling " + method);// Add some pre operations
				Object result = method.invoke(helloService, args);
				System.out.println("after calling " + method);// Add some postpone operations
				return result;
			}

		};

		Class classType = HelloService.class;
		return (HelloService) Proxy.newProxyInstance(
				classType.getClassLoader(), new Class[] { classType }, handler);
	}
}

package proxy.cxz.org;

public class Main {
	public static void main(String[] args) {
		HelloService helloService = new HelloServiceImpl();
		HelloService helloServiceProxy = HelloServiceProxyFactory
				.getHelloServiceProxy(helloService);
		System.out.println("The name of the proxy class: " + helloServiceProxy.getClass().getName());
		System.out.println(helloServiceProxy.echo("hello"));
		System.out.println(helloServiceProxy.getTime());
	}
}
分享到:
评论

相关推荐

    08spring4_dynamicproxy.rar

    package cn.sxt.dynamicproxy; import java.util.ArrayList; import java.util.List; import cn.sxt.service.UserService; import cn.sxt.service.UserServiceImpl; public class Client { public ...

    proxy Java版

    在Java中,代理通常通过Java动态代理(Java Dynamic Proxy)或者Java接口代理来实现。 在给定的"proxy Java版"项目中,开发者对原有的代码进行了优化,使其兼容JDK 1.7。这是一个关键改进,因为JDK 1.7在Java社区中...

    SpringIOC,DI+dynamic proxy 实现盗版AOP

    本文将深入探讨如何使用Spring的IOC和DI特性,结合动态代理(Dynamic Proxy)来实现一种类似AOP(面向切面编程)的功能,以达到在不修改原有代码的情况下增强或拦截方法调用的目的。 **一、Spring IOC(控制反转)*...

    java reflect and dynamic proxy .Java反射和动态代理

    **Java动态代理(Dynamic Proxy)** Java动态代理是Java提供的一种机制,可以在运行时创建具有特定接口的代理类。这通常用于实现AOP(面向切面编程)或事件处理等。主要由java.lang.reflect.Proxy和java.lang....

    JDK动态代理proxy

    JDK动态代理,全称为Java Dynamic Proxy,是Java标准库提供的一种强大且灵活的机制,允许我们在运行时创建代理类来实现指定的接口。这种机制主要用于实现AOP(面向切面编程)或为已有接口提供额外的功能,如日志、...

    反射与动态代理Reflection&DynamicProxy.zip

    Java反射(Reflection)和动态代理(Dynamic Proxy)是Java编程中的高级特性,它们为程序提供了强大的功能和灵活性。本文将深入探讨这两个主题,并通过源码分析来加深理解。 首先,让我们了解一下Java反射。反射机制...

    DynamicProxy源码

    动态代理(DynamicProxy)是Java中一种强大的设计模式,它允许在运行时创建代理对象,这些代理对象可以作为原对象的“代理”,在调用原对象的方法时添加额外的功能,如日志、性能监控、事务处理等。在Java中,`java....

    proxy.rar java三种代理模式源码

    在"DynamicProxy"目录下的源码中,可以看到如何使用这些类和接口创建并操作动态代理的例子。 3. 接口代理(JDK动态代理): 接口代理是基于Java的反射机制实现的动态代理,适用于目标对象实现了接口的情况。在...

    JDK代理和Cglib代理

    **JDK代理(Java Dynamic Proxy)** JDK动态代理是Java标准库提供的一种代理机制,位于`java.lang.reflect`包下的`Proxy`类和`InvocationHandler`接口。JDK代理主要基于接口来实现,也就是说,只有实现了特定接口的...

    DynamicProxy:一个简单实用的JDK动态代理演示

    动态代理主要由两个核心类组成:`java.lang.reflect.Proxy` 和 `java.lang.reflect.InvocationHandler`。`Proxy` 类是用于创建动态代理对象的工厂,而`InvocationHandler`接口则定义了代理对象如何处理方法调用的...

    Java动态代理语法Proxy类原理详解

    DynamicProxy dynamicProxy = new DynamicProxy(abstractSubject); AbstractSubject abstractProxy = (AbstractSubject) Proxy.newProxyInstance( abstractSubject.getClass().getClassLoader(), ...

    DYNAMIC PROXY

    在Java中,动态代理主要依赖于两个接口:`java.lang.reflect.InvocationHandler` 和 `java.lang.reflect.Proxy`。 `InvocationHandler` 接口定义了一个方法 `invoke()`,该方法会在代理对象的方法被调用时执行。...

    dynamic-proxy-demo.zip

    Java提供了java.lang.reflect.Proxy类和java.lang.reflect.InvocationHandler接口来实现动态代理。Proxy类用于创建代理对象,而InvocationHandler接口定义了处理代理对象方法调用的逻辑。这种方式下,我们无需为每个...

    Java静态代理与动态代理demo

    在动态代理中,我们创建了一个 `DynamicProxy` 类实现 `InvocationHandler` 接口,然后使用 `Proxy.newProxyInstance()` 方法创建代理对象。`invoke()` 方法会拦截所有对代理对象的方法调用,从而可以在调用前后添加...

    Spring 代理 Aop 实现原理讲解.docx

    - **JDK动态代理(Java Dynamic Proxy)**:适用于接口代理,当被代理的目标对象实现了至少一个接口时,Spring会生成该接口的实现类作为代理。 - **CGLIB代理**:如果目标对象没有实现任何接口,Spring会使用CGLIB...

    dt.zip_spring_www.dynamic-proxy.c

    在Spring中,它主要通过`java.lang.reflect.Proxy`类和`java.lang.reflect.InvocationHandler`接口来实现。`Proxy`类用于创建代理对象,而`InvocationHandler`接口定义了当代理对象的方法被调用时应如何处理的逻辑。...

    Java动态代理Proxy和cglib

    在Java编程中,动态代理(Dynamic Proxy)是一种强大的设计模式,它允许我们在运行时创建具有特定接口的新对象。Java的动态代理主要通过`java.lang.reflect.Proxy`类和`java.lang.reflect.InvocationHandler`接口...

    java 设计模式之代理模式(Proxy Pattern)实现代码及设计详解:动态代理模式、静态代理模式

    Service proxyService = (Service) DynamicProxy.getProxyInstance(realService); proxyService.doSomething(); ``` 代理模式在软件开发中有广泛的应用,例如在远程调用、事务管理、缓存控制、权限验证等场景。在...

    java 静态代理和动态代理学习实例源码

    Java提供了`java.lang.reflect.Proxy`类和`java.lang.reflect.InvocationHandler`接口来实现动态代理。 1. **定义接口**:同样,我们首先定义一个接口。 ```java public interface Service { void execute(); } ``...

    Java-Dynamic-Proxy:动态代理实现

    在Java中,动态代理主要通过两个类来实现:`java.lang.reflect.Proxy` 和 `java.lang.reflect.InvocationHandler`。`Proxy` 类用于创建动态代理实例,而 `InvocationHandler` 接口则定义了当调用代理对象的方法时应...

Global site tag (gtag.js) - Google Analytics