首页 > 其他 > 详细

动态代理

时间:2021-05-11 16:24:44      阅读:13      评论:0      收藏:0      [点我收藏+]
public interface UserServices {
	void add();
	void delete();
	void set();
	void get();

}

  

public class UserServiceImpl implements UserServices{

	@Override
	public void add() {
		// TODO Auto-generated method stub
		System.out.println("添加一个用户");
		
	}

	@Override
	public void delete() {
		// TODO Auto-generated method stub
		System.out.println("删除一个用户");
		
	}

	@Override
	public void set() {
		// TODO Auto-generated method stub
		System.out.println("修改一个用户");
	}

	@Override
	public void get() {
		// TODO Auto-generated method stub
		System.out.println("查询一个用户");
	}

}

  

package com.cntaiping.tpi.claimplat.serviceapi.Test1.demo02;

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

public class TargetProxy implements InvocationHandler {
	
	//获取被代理对象
	private Object target;


	public void setTarget(Object target) {
		this.target = target;
	}
	
	public Object getporxy() {
	Object proxy = Proxy.newProxyInstance(target.getClass().getClassLoader(), 
			target.getClass().getInterfaces(), this);
		return proxy;
		
	}

	@Override
	public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
		String name = method.getName();
		System.out.println("前置增强"+name+"方法");
		UserServices invoke = (UserServices)method.invoke(target, args);
		System.out.println("后置增强");
		return invoke;
	}
	

}

  

package com.cntaiping.tpi.claimplat.serviceapi.Test1.demo02;

public class Proxy {
	public static void main(String[] args) {
		//获取被代理对象
		UserServiceImpl userServiceImpl = new UserServiceImpl();
		//间接获取被代理对象
		TargetProxy targetProxy = new TargetProxy();
		//注入代理對象
		targetProxy.setTarget(userServiceImpl);
		//生成真正的動態代理對象
		UserServices porxy = (UserServices)targetProxy.getporxy();//使用同一个接口
		//调用动态代理
		porxy.add();
		porxy.delete();
		porxy.set();
		porxy.get();
		
		
	}

	

}

  

动态代理

原文:https://www.cnblogs.com/demowei/p/14755093.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!