spring 动态代理

时间:2023-03-09 16:06:52
spring 动态代理
突然想到AOP,就简单回忆一下动态代理。
1.什么是动态代理?
  假如有个用户有增删该查4个方法,如果要对用户操作后进行日志记录,可能会有人说直接在增删改查后做日志记录就行。
  一旦我想在用户操作之前加一个权限验证方法,那每个调用方法之前得再加一个权限验证方法,这样的工作量则是巨大的。
  解决方案:将对象增删改查方法交给代理去执行,代理在执行方法前后可以做日志和权限控制。   代理:本来应该由自己做的事情,由别人去做
  动态代理:在程序运行过程中生成代理对象,由该代理对象去完成自己要去做的事情。
  应用:
    1.事务管理,执行某个方法前开启事务,执行后关闭。
    2.日志
    3.权限
    4.方法执行效率
spring 的动态代理就是AOP的实现原理,因此理解动态代理非常重要。如下记录一种简单的动态代理demo 详情请参考:https://www.cnblogs.com/techyc/p/3455950.html public class LogHandler implements InvocationHandler { private Object target; public Object createProxy(Object targetObject){
this.target = targetObject;
return Proxy.newProxyInstance(
targetObject.getClass().getClassLoader(),
targetObject.getClass().getInterfaces(), this);
} @Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
return method.invoke(target, args);
}
}