User.java
package domain;
public class User {
private String userId;
private String userName;
private String userPwd;
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserPwd() {
return userPwd;
}
public void setUserPwd(String userPwd) {
this.userPwd = userPwd;
}
@Override
public String toString() {
return "User [userId=" + userId + ", userName=" + userName
+ ", userPwd=" + userPwd + "]";
}
}
UserDao.java
package inter;
import domain.User;
public interface UserDao {
boolean save(User user);
}
UserDaoImpl.java
package inter;
import domain.User;
public class UserDaoImpl implements UserDao{
@Override
public boolean save(User user) {
System.out.println("user is being saved...");
return true;
}
}
UserInvocationHandler.java
package jdk.proxy;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
public class UserInvocationHandler implements InvocationHandler{
private Object target;
public UserInvocationHandler(Object target){
this.target=target;
}
@Override
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
if("save".equals(method.getName())){
System.out.println("begin to save user...");
Object obj = method.invoke(target, args);
System.out.println("user is saved...");
return obj;
}
return method.invoke(target, args);
}
}
UserDaoTest
package proxyTest;
import inter.UserDao;
import inter.UserDaoImpl;
import java.lang.reflect.Proxy;
import jdk.proxy.UserInvocationHandler;
import org.junit.Test;
import domain.User;
public class UserDaoTest {
@Test
public void test001(){
UserDaoImpl udi = new UserDaoImpl();
UserDao ud = (UserDao) Proxy.newProxyInstance(udi.getClass().getClassLoader(), udi.getClass().getInterfaces(), new UserInvocationHandler(udi));
ud.save(new User());
}
}
输出结果为:
begin to save user...
user is being saved...
user is saved...