java动态代理
来源:互联网 发布:蜂窝移动网络 4g 编辑:程序博客网 时间:2024/06/06 02:41
使用java提供的Proxy类和InvocationHandler实现动态代理类:
接口
public interface IRequest {public boolean revokeRequest(boolean isHavePermission);}
接口的实现类:
public class RequestImpl implements IRequest {@Overridepublic boolean revokeRequest(boolean isHavePermission) {System.out.println("revokeRequest 用户是否有权限" + isHavePermission);return isHavePermission;}}
使用proxy动态产生被代理的对象,也就是RequestImpl:
public class RequestProxy implements InvocationHandler {private Object target; // 目标对象public Object bind(Object target) {this.target = target;Class<?> cl = target.getClass();return Proxy.newProxyInstance(cl.getClassLoader(), cl.getInterfaces(), this);}/* * 工厂方法,产生被代理的对象 * */public Object factory(Object target) {this.target = target;Class<?> cl = target.getClass();return Proxy.newProxyInstance(cl.getClassLoader(), cl.getInterfaces(), this);}@Overridepublic Object invoke(Object proxy, Method method, Object[] args) throws Throwable {Object result = null;System.out.println("调用方法前的操作...");result = method.invoke(target, args);System.out.println("调用方法后的操作...");return result;}}
用户程序的使用:
public class MainClass {public static void main(String[] args) {RequestProxy proxy = new RequestProxy();IRequest request = (IRequest) proxy.factory(new RequestImpl());boolean result = request.revokeRequest(true);System.out.println(result);}}
0 0
- Java 代理,动态代理
- [Java] Java 动态代理
- java代理及动态代理
- java代理模式--动态代理
- Java静态代理、动态代理
- Java 代理之 动态代理
- Java 代理与动态代理
- java静态代理,动态代理
- 代理模式&java动态代理
- Java代理与动态代理
- Java静态代理动态代理
- JAVA代理模式--动态代理
- java 代理和动态代理
- JAVA动态代理 代理模式
- Java动态代理--jdk代理
- Java动态代理--cglib代理
- Java 代理与动态代理
- java代理模式-动态代理
- SVN 生命周期
- 贪心--Sorting Railway Cars
- 1.OracleBBED解析数据块——介绍
- 数盟
- 2.Oracle BBED解析数据块——准备BBED
- java动态代理
- 装机软件
- SVN 检出过程
- 技术支持联系方式
- Servlet3的上传配置@MultipartConfig
- CentOS 7.0 MySQL 5.6.19安装与卸载脚本小结
- python核心编程-线程threading模块之单线程多线比较
- 使用宏定义让参数含义更清晰
- Cassandra与HBase的大数据对决 谁是胜者?