1 什么是动态代理
所谓 动态代理, 就是不修改代码的情况下,对实现的功能进行增强.该思想在AOP编程中应用广泛.我的理解是 在内存中 直接修改了 字节码文件,属于动态插入,一次性使用.[待考证].
2 动态代理小案例
public static void main(String[] args) {
Student stu=new Student();
Person person =(Person) Proxy.newProxyInstance(stu.getClass().getClassLoader(), new Class[]{Person.class}, new InvocationHandler() {
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
if (method.getName().equals("study")) {
//动态增强我们的方法
System.out.println("学习加强....");
return null;
} else {
//其他方法放行
return method.invoke(stu, args);
}
}
});
person.study();
}
运行结果: