一、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>