1.通过proxy方式实现代理模式 此方式适用于有接口的情况 CGLB适用于没有接口的情况 2.无论是通过哪种方式最终目的 都是为了安全性,由代理去干一些我们 不行干的事,例如使用代理实现AOP即 面向切面编程,在不改变源代码的基础上 就可以实现方法的增强。例如增强日志 记录方法或者程序执行所用时间等。 3.代码示例: public class TestProxy { public static void main(String[] args) { Dog dog = new Dog(); Proxy.newProxyInstance(dog.getClass().getClassLoader(), dog.getClass().getInterfaces(), new InvocationHandler() { @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { if ("eat".equals(method.getName())){ System.out.println("eat方法开始"); dog.eat(); System.out.println("eat方法结束"); }else if ("bark".equals(method.getName())){ System.out.println("bark方法开始"); dog.bark(); System.out.println("bark方法结束"); } return null; } }); } }
Spring之面向切面编程AOP简要解析
最新推荐文章于 2024-09-14 12:04:08 发布