jdk动态代理的一个例子,jdk动态代理是在接口的基础上生成代理对象,所有要有一个接口
可以根据这个jdk动态代理实现很多问题,可以多尝试
1,定义接口
public interface IUserDao {
User findById(String id);
}
2,接口实现类
public class UserDaoImpl implements IUserDao {
public User findById(String id) {
User user = new User();
user.setId(id);
return user;
}
}
3,pojo类
@Data
public class User {
private String id;
private String username;
}
4,代理类
public class UserProxy {
@Test
public void testProxy() {
IUserDao userDao = new UserDaoImpl();
IUserDao o = (IUserDao) Proxy.newProxyInstance(userDao.getClass().getClassLoader(), userDao.getClass().getInterfaces(), new InvocationHandler() {
/*
* proxy 当前代理对象的引用
* method 调用方法的引用
* args 传递的参数
* */
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
Object invoke = method.invoke(userDao, args[0] + "12");
return invoke;
}
});
User byId = o.findById("2");
System.out.println(byId);
}
}
控制台打印:User(id=212, username=null)