您的位置:首页 > 编程语言 > Java开发

jdk动态代理模式

2018-02-01 19:46 369 查看
UserDao dao =new UserDaoImpl();//目标类
UserDao proxy=(UserDao)Proxy.newProxyInstance(
dao.getClass().getClassLoader(),
dao.getClass().getInterfaces(), new InvocationHandler() {
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
System.out.println("开启");
Object object=method.invoke(dao, args);//dao是目标对象,参数默认
System.out.println("关闭");
return null;
}
});
proxy.addUser();

Dao是目标类,Proxy是代理类。本方法采用的是jdk动态代理方法。
第一个参数需要的是类加载器。所以是目标类dao的getClass().getClassLoader()。

第二个参数是要获取目标类的所有接口方法,即dao.getClass().getInterfaces()。

第三 实现一个InvocationHandle必须实现invoke方法
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息