JAVA_动态代理AOP切面编程
2017-12-12 22:01
603 查看
package staticProxy; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; interface Human { void info(); void fly(); } // 被代理类 class SuperMan implements Human { public void info() { System.out.println("我是SuperMan!"); } public void fly() { System.out.println("I believe I can fly!"); } } class HumanUtil { public void method1() { System.out.println("============方法一============"); } public void method2() { System.out.println("============方法二============"); } } class MyInvocationHandler implements InvocationHandler { Object obj;// 被代理类对象的一个声明 public void setObject(Object object) { this.obj = object; } @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { HumanUtil h = new HumanUtil(); h.method1(); Object returnVal = method.invoke(obj, args); h.method2(); return returnVal; } } class MyProxy { // 动态的创建一个代理类的对象 public static Object getProxyInstance(Object obj) { MyInvocationHandler handler = new MyInvocationHandler(); handler.setObject(obj); return Proxy.newProxyInstance(obj.getClass().getClassLoader(), obj.getClass().getInterfaces(), handler); } } public class DynamicProxyAOP { public static void main(String[] args) { SuperMan man = new SuperMan();//创建一个被代理类的对象 Object obj = MyProxy.getProxyInstance(man);//返回一个代理类的对象 Human hu = (Human)obj; hu.info();//通过代理类的对象调用重写的抽象方法 System.out.println(); hu.fly(); } }
相关文章推荐
- Java动态代理之JDK动态代理和CGLib动态代理 面向切面编程AOP原理
- spring_由XML实现AOP面向切面编程_实现动态代理
- Java动态代理模式jdk和cglib的2种实现以及二者的区别(AOP面向切面的前奏)
- Java 反射 动态代理 切面编程
- JAVA中的动态代理和AOP编程思想
- Web项目中静态代理和动态代理为基础的面向切面编程AOP
- Java动态代理模式jdk和cglib的2种实现以及二者的区别(AOP面向切面的前奏)
- spring_由注解实现AOP面向切面编程_实现动态代理
- 动态代理和AOP切面编程
- AOP面向切面编程,JDK的动态代理方式
- JAVA AOP编程之动态代理技术
- Web项目中静态代理和动态代理为基础的面向切面编程AOP
- JAVA AOP编程之动态代理技术
- 【JavaWeb-14】代理Proxy、动态代理、AOP编程思想、注解、元注解、类加载器
- JAVA AOP编程之动态代理技术
- JAVA 动态代理与AOP编程(面向切面编程)
- Java静态代理、动态代理以及AOP
- AOP与JAVA动态代理
- Java JDK动态代理(AOP)的实现原理与使用详析
- Spring中AOP的两种代理方式(Java动态代理和CGLIB代理)