JDK动态代理实现拦截
来源:互联网 发布:淘宝店铺出售0 编辑:程序博客网 时间:2024/06/06 20:55
需求:访问工资,根据权限判定是否有资格。需要打印日志以及安全性工作;
实现类: Logger 类打印日志;
Security类安全处理;
SalaryManagerImpl类实现访问需求;
MyInterceptor类进行拦截后的请求处理;
Privilege权限类;
SalaryTest类进行测试请求;
Logger :
public class Logger {public void logging(){System.out.println("logging"); }}
Security:
public class Security { public void security(){ System.out.println("security"); };}
privilege:
public class Privilege { private String access;public String getAccess() {return access;}public void setAccess(String access) {this.access = access;} }
SalaryManager:
public interface SalaryManager {public void showSalary();}
SalaryManagerImpl:
public class SalaryManagerImpl implements SalaryManager {public void showSalary() { System.out.println("show salary"); }}
MyInterceptor:
import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;public class MyInterceptor implements InvocationHandler { private Object target; private Logger logger; private Security security; private Privilege privilege; public MyInterceptor(Object target,com.itheima12.jdkproxy.salary.Logger logger, Security security,Privilege privilege) {super();this.target = target;this.logger = logger;this.security = security;this.privilege = privilege;}public Object invoke(Object proxy, Method method, Object[] args)throws Throwable {/** * 1.启动日志 * 2.启动安全性类 * 3.验证权限; * 滴啊用目标对象的目标方法 */this.logger.logging();this.security.security();if("admin".equals(this.privilege.getAccess())){method.invoke(target);//目标方法}else{System.out.println("没有权限调侃工资!");}return null;}}
SalaryTest:
import java.lang.reflect.Proxy;import org.junit.Test;public class SalaryTest {@Testpublic void testSalary(){Object target = new SalaryManagerImpl();Logger logger=new Logger();Security security=new Security();Privilege privilege = new Privilege();privilege.setAccess("dgfg");MyInterceptor interceptor = new MyInterceptor(target,logger,security,privilege);SalaryManager proxy=(SalaryManager)Proxy.newProxyInstance(target.getClass().getClassLoader(),target.getClass().getInterfaces(), interceptor);proxy.showSalary();}}
阅读全文
0 0
- JDK动态代理实现拦截
- jdk动态代理拦截方法
- JDK的动态代理实现调用拦截器中的方法
- JDK动态代理实现
- jdk动态代理实现
- 实现jdk动态代理
- jdk动态代理实现
- jdk实现动态代理
- JDK实现动态代理
- JDK动态代理实现
- 初识动态代理-jdk,CGLIB,拦截器
- JDK 动态代理 & AOP实现动态代理
- struts2拦截器(JDK反射,JDK动态代理)
- JDK动态代理实现AOP
- JDK动态代理实现原理
- JDK动态代理实现原理
- jdk动态代理的实现
- 仿JDK动态代理实现
- jQuery
- python +jupyter (python3.5) 实现词云(png)
- MEMS 微惯导的选型对比与简介
- 算法设计与应用基础:第十七周(1)
- Java中一维数组的排序方式
- JDK动态代理实现拦截
- getCacheDir()和getFilesDir()方法区别.
- linux_logo结构体
- 2017 idea intellij 激活方式 系统不限
- asp.net 导出mdb
- iOS 实时监听UITableViewCell中的UItextField的值的变化
- 购物车
- 两数之和问题各变种多解法小结
- tp5下的插件uploadify的使用