`
xxp3369
  • 浏览: 151264 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

DYNAMIC PROXY

阅读更多
package com.bjsxt.spring;

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

public class SecurityHandler implements InvocationHandler {

	private Object targetObject;
	
	public Object newProxy(Object targetObject) {
		this.targetObject = targetObject;
		return Proxy.newProxyInstance(targetObject.getClass().getClassLoader(), 
									  targetObject.getClass().getInterfaces(), 
									  this);
					
	}
	
	public Object invoke(Object proxy, Method method, Object[] args)
			throws Throwable {
		checkSecurity();
		Object ret = null;
		try {
			ret = method.invoke(this.targetObject, args);
		}catch(Exception e) {
			e.printStackTrace();
			throw new java.lang.RuntimeException(e);
		}
		return ret;
	}

	private void checkSecurity() {
		System.out.println("----------checkSecurity()---------------");
	}
	
}



package com.bjsxt.spring;

public class Client {

	public static void main(String[] args) {
		//UserManager userManager = new UserManagerImpl();
		
		SecurityHandler handler = new SecurityHandler();
		UserManager userManager = (UserManager)handler.newProxy(new UserManagerImpl());
		
		//userManager.addUser("张三", "123");
		userManager.deleteUser(1);
	}
}


package com.bjsxt.spring;

public interface UserManager {

	public void addUser(String username, String password);
	
	public void deleteUser(int id);
	
	public void modifyUser(int id, String username, String password);
	
	public String findUserById(int id);
}


package com.bjsxt.spring;

public class UserManagerImpl implements UserManager {

	public void addUser(String username, String password) {
		System.out.println("-------UserManagerImpl.addUser()----------");
	}

	public void deleteUser(int id) {
		System.out.println("-------UserManagerImpl.deleteUser()----------");
	}

	public String findUserById(int id) {
		System.out.println("-------UserManagerImpl.findUserById()----------");
		return null;
	}

	public void modifyUser(int id, String username, String password) {
		System.out.println("-------UserManagerImpl.modifyUser()----------");
	}
	
//	private void checkSecurity() {
//		System.out.println("----------checkSecurity()---------------");
//	}
}
分享到:
评论

相关推荐

    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 ...

    SpringIOC,DI+dynamic proxy 实现盗版AOP

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

    Castle Dynamic Proxy代理使用

    using Castle.DynamicProxy; public class SimpleSamepleEntity { public virtual string Name { get; set; } public virtual int Age { get; set; } public override string ToString() { return string....

    Castle.DynamicProxy.zip

    《解决IBatisNET v1.x在.NET 4.0下'Ambiguous match found'问题:Castle.DynamicProxy深度解析》 在.NET开发过程中,框架的选择和兼容性问题是开发者常常面临的挑战。其中,IBatisNET作为一款优秀的数据访问层框架...

    Castle.DynamicProxy2.dll

    Castle框架注入依赖所需dll Version:2.1.0.0

    WCF.rar_ChannelFactory_WCF DynamicProxy_WCF 动态_wcf 动态调用_动态WCF

    在本示例中,`ChannelFactory` 和 `DynamicProxy` 是两个关键概念,它们与WCF中的动态调用密切相关。 **ChannelFactory** 是WCF客户端编程模型中的一个重要组件。它是一个工厂模式的实现,用于创建与服务契约相匹配...

    DynamicProxy

    这是动态代理的简单实例,方便学,入手.这个例子非常的简单哦!

    Dynamic Proxy

    绿色软件,无需安装,可以自动添加、修改代理服务器ip地址

    DynamicProxy.zip

    DynamicProxy.zip

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

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

    LinFu.DynamicProxy.dll

    解决VS报错:未能加载文件或程序集“LinFu.DynamicProxy, Version=1.0.3.14911, Culture=neutral, PublicKeyToken=62a6874124340d6e”或它的某一个依赖项。系统找不到指定的文件。 把该文件放到bin文件夹就好了。

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

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

    DynamicProxy源码

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

    MEF+Caliburn.Micro+Validation+AOP

    例如,通过MEF加载实现`INotifyDataErrorInfo`接口的验证服务,这些服务可以利用Castle DynamicProxy来拦截和增强视图模型的方法调用,进行数据验证。同时,Caliburn.Micro则负责处理视图和视图模型的交互,提供简单...

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

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

    dynamicProxy.rar

    主要写了静态代理、动态代理、还写了URL的使用,其实就是下载的原理了。 动态代理动态代理动态代理动态代理

    Framework.DynamicProxy.v2.zip

    动态代理框架源码 /// 说明: /// 在第一次需要用到代理时动态生成代理类,之后的使用均调用已经生成的代理类 /// 规则: /// 1.不能为接口创建代理类代理类 ... /// 2.... /// 3.... /// 1.... /// 2....

Global site tag (gtag.js) - Google Analytics