-
动态代理:
- 代理模式:为其他对象提供一种代理来控制对这个对象的访问,增强一个类中的某个方法,对其进行扩展
-
调用分为俩类,一类是jdk的接口代理,需要有接口,另一种是cglib代理
-
proxyFactory:以上俩中在spring中封装叫proxyFactory,通过这个就可以不用关注代理用cglib还是jdk动态代理,会自己去判断
-
advice和advisor:一个advisor包含pointcut和advice。
-
创建代理对象的方式:proxyFactory,advisor,advice,pointct;若果针对某一个bean创建代理,可以通过proxyFacotryBean配合@Bean;
-
如果要制定代理某一个bean可以通过beanNameAutoProxyCreator
-
如果要制定某一类代理bean可以通过defaultPointCutAdvisor;也可以通过@Aspect
-
对于spring aop的理解
- aop面向切面编程,通过pointcut和advice
- 一些aop概念
- aspect 切面在这里可以定义poincut advice....
- jointpoint 连接点,比如一个执行方法
- advice 通知,
- pointcut 切点,匹配连接点
- target object 被代理对象
- aop proxy 代理工厂
- weaving 表示织入
-
proxyFactory选择cglib或者 jdk动态代理原理:
- 如果optimize为true或者proxyTargetClass为true,或者对象添加接口,用cglib,否则就用jdkDynamicAopProxy
-
代理对象创建过程: