JDK动态代理

原创 2015年11月21日 19:50:30

一、UserService接口

<span style="font-size:18px;">package com.seven.spring.l_proxy_2_JDK;

public interface UserService {
   void queryUsers();
   
   void saveUser();
   
   void deleteUser();
}</span>
二、UserServiceImpl实现类

<span style="font-size:18px;">package com.seven.spring.l_proxy_2_JDK;

public class UserServiceImpl implements UserService{

	@Override
	public void queryUsers() {
		System.out.println("查询一个User");
		
	}

	@Override
	public void saveUser() {
		System.out.println("保存一个User");
		
	}

	@Override
	public void deleteUser() {
		System.out.println("删除一个User");
		
	}

}</span>
三、代理对象LogJdkproxy,实现了InvocationHandler接口

<span style="font-size:18px;">package com.seven.spring.l_proxy_2_JDK;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
/**
 * jdk动态代理
 * @author Administrator
 *
 */
public class LogJdkproxy implements InvocationHandler{
	private Object target; //目标对象
	
	public LogJdkproxy(Object target) {
		this.target = target;
	}
	
	/**
	 * 创建代理对象
	 * @return
	 */
    public Object createProxyInstance(){
    	return Proxy.newProxyInstance(getClass().getClassLoader(),//
    			target.getClass().getInterfaces(), //
    			this);

    }
	
	/**
	 * @param proxy  代理对象
	 * @param method 当前执行的方法
	 * @param args   方法参数
	 */
	public Object invoke(Object proxy, Method method, Object[] args)
			throws Throwable {
		System.out.println("==开始执行操作==");
		
		Object res = method.invoke(target, args);//执行原来的方法
		
		System.out.println("==操作执行结束==");
		return res;
	}

}
</span>
四、最后写一个测试类MainTest

<span style="font-size:18px;">package com.seven.spring.l_proxy_2_JDK;

import org.junit.Test;

public class MainTest {
	@Test
	public void test1(){
		
		UserService userService = new UserServiceImpl();
		
		userService = (UserService) new LogJdkproxy(userService).createProxyInstance();//使用了包装之后的代理对象
		
		userService.saveUser();
		System.out.println("--------------");
		
		userService.queryUsers();
		System.out.println("--------------");
		
		userService.deleteUser();
	}

}
</span>





版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Java动态代理(JDK和cglib)

  • 2017-07-04 21:10
  • 246KB
  • 下载

jdk动态代理技术详解

  • 2013-06-30 13:59
  • 101KB
  • 下载

Spring AOP的底层实现技术---JDK动态代理

在JDK 1.3以后提供了动态代理的技术,允许开发者在运行期创建接口的代理实例。在Sun刚推出动态代理时,还很难想象它有多大的实际用途,现在我们终于发现动态代理是实现AOP的绝好底层技术。    JD...

jdk动态代理

java jdk 动态代理演示demo

  • 2016-08-07 17:14
  • 18KB
  • 下载

【Spring】jdk动态代理例子

DaoImpl类: public class PersonDaoImpl implements PersonDao{ @Override public void savePerson() { ...

JDK动态代理源码

java动态代理(JDK和cglib)

AVA的动态代理  代理模式  代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。代理类与...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)