反射的动态代理
来源:互联网 发布:平板炒股软件 编辑:程序博客网 时间:2024/05/28 15:51
创建一个接口
package com.reflect.demo;public interface UserDao {public abstract void add();public abstract void del();public abstract void update();public abstract void find();}
创建一个实现接口类
package com.reflect.demo;public class UserDaoImpl implements UserDao {@Overridepublic void add() {System.out.println("添加");}@Overridepublic void del() {System.out.println("删除");}@Overridepublic void update() {System.out.println("修改");}@Overridepublic void find() {System.out.println("查询");}}基本操作
package com.reflect.demo;public class UserDaoDemo {public static void main(String[] args) {/* * 基本操作1 */UserDao ud = new UserDaoImpl();ud.add();ud.del();ud.update();ud.find();System.out.println("--------");/* * */UserDao ud2 = new UserDaoImpl();ud2.add();ud2.del();ud2.update();ud2.find();System.out.println("--------");}}
创建
package com.reflect.demo;import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;public class MyInvocationHandler implements InvocationHandler {private Object target;public MyInvocationHandler(Object target) {this.target = target;}@Overridepublic Object invoke(Object proxy, Method method, Object[] args)throws Throwable {System.out.println("权限校验");Object result = method.invoke(target, args);System.out.println("日志记录");return result; //返回代理对象}}
package com.reflect.demo;import java.lang.reflect.Proxy;public class DynamicProxyTest {public static void main(String[] args) throws Exception{/* * 基本操作1 */UserDao ud = new UserDaoImpl();ud.add();ud.del();ud.update();ud.find();System.out.println("--------");/* * 动态代理对象 pulic static Object newProxyInstance(ClassLoader loader, * Class<?>[] interfaces,InvocationHandler h) *///UserMyInvocationHandler handler = new MyInvocationHandler(ud);UserDao proxy = (UserDao) Proxy.newProxyInstance(ud.getClass().getClassLoader(), ud.getClass().getInterfaces(), handler);proxy.add();proxy.del();proxy.update();proxy.find();System.out.println("--------");//Student/* * 动态代理 多个 */StudentDao sd = new StudentDaoImpl();sd.login();sd.regist();sd.start();sd.finish();System.out.println("--------");MyInvocationHandler handler1 = new MyInvocationHandler(ud);StudentDao proxy1 = (StudentDao) Proxy.newProxyInstance(ud.getClass().getClassLoader(), ud.getClass().getInterfaces(), handler1);proxy1.login();proxy1.regist();proxy1.start();proxy1.finish();}}
添加
删除
修改
查询
--------
权限校验
添加
日志记录
权限校验
删除
日志记录
权限校验
修改
日志记录
权限校验
查询
日志记录
--------
权限校验
登录
日志记录
权限校验
注册
日志记录
权限校验
开始
日志记录
权限校验
完成
日志记录
0 0
- 反射的动态代理
- 代理,动态代理,反射
- 代理,动态代理,反射
- java的动态代理和反射
- JAVA的反射机制与动态代理
- JAVA的反射机制与动态代理
- JAVA的反射机制和动态代理
- 反射的应用之动态代理
- java的反射实现动态代理类
- 通过反射模拟AOP的动态代理
- 注解、动态代理与反射的应用
- JAVA的反射机制和动态代理
- 反射和动态代理的区别
- java反射和动态代理的理解
- 反射-动态代理的概述和实现
- JAVA 基于反射的动态代理
- 反射和动态代理的实现原理
- 反射与动态代理
- Junit高级
- spring事物不回滚问题!
- github常见操作和常见错误!错误提示:fatal: remote origin already exists.
- github 提交代码 方法
- xamarin ios UIPickerView
- 反射的动态代理
- 搜索提示是如何实现的
- 安卓ListView图片异步加载错位的处理
- 学习数据结构的方法
- android Key简要说明
- 外挂原理
- 我的IOS 9 适配
- iOS9适配
- Item 32:确保public继承是"is a"的关系 Effective C++笔记