JDK的动态代理-升级版
2015-06-01 16:30
363 查看
public interface Interceptor { public void interceptor(); }
public class Logger implements Interceptor{ public void interceptor() { System.out.println("logging"); } }
public class Security implements Interceptor{ public void interceptor() { System.out.println("security"); } }
public class Privilege implements Interceptor{ public void interceptor() { System.out.println("privilege"); } }
public class SalaryInterceptor implements InvocationHandler{ private Object target; private List<Interceptor> interceptors; public SalaryInterceptor(Object target,List<Interceptor> interceptors) { super(); this.target = target; this.interceptors = interceptors; } public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { for (Interceptor interceptor : interceptors) { interceptor.interceptor(); } method.invoke(target, args); return null; } }
public class SalaryManagerTest { @Test public void testSalaryManager(){ Object target = new SalaryManagerImpl(); Logger logger = new Logger(); Security security = new Security(); Privilege privilege = new Privilege(); List<Interceptor> interceptors = new ArrayList<Interceptor>(); interceptors.add(logger); interceptors.add(security); interceptors.add(privilege); /** * 创建一个拦截器 */ SalaryInterceptor interceptor = new SalaryInterceptor(target, interceptors); SalaryManager salaryManager = (SalaryManager)Proxy.newProxyInstance(target.getClass().getClassLoader(), target.getClass().getInterfaces(), interceptor); salaryManager.showSalary(); } }
相关文章推荐
- JavaWeb工程中web.xml基本配置
- CronTrigger spring定时任务
- CronTrigger spring定时任务
- eclipse提交项目到github
- JAVA 堆排序实现
- spring 加载多个配置文件
- svn常见问题-----转自MyJavaBlog的专栏
- Java 反射机制浅析
- springMVC与struts2的区别
- HeapSort的java语言实现
- eclipse 下github 安装
- java数据类型杂记
- Java I/O系统----------- I/O流的典型使用方式
- Java I/O系统----------- 标准I/O
- win8 系统 myeclipse10.x 破解
- eclipse 工程手工配置
- java中如何定义不规则数组
- eclipse必备快捷键
- 好记性不如烂笔头88-spring3学习(9)-schema的配置的解读和说明
- 【JAVA教程】关于增强visualvm的一些想法