架构师培训:Spring AOP的原理

SpringAOP,SpringMVC,这两个应该是国内面试的问题,在线上有很多答案,实际上你可以背诵它们。但是今天,我将带大家用简单的语言解释源代码,并了解他的原则。为了使印象更加令人印象深刻,在面试中很容易做到。
  SpringAOP原理
  简要谈谈AOP的设计:
  每个bean将由JDK或Cglib代理。取决于是否有接口。
  每个Bean将具有多个“方法拦截器”。注意:拦截器分为两层,外层由Spring内核控制,内层拦截器由用户设置,即AOP。
  调用代理方法时,它首先通过外部拦截器,然后外部拦截器根据方法的各种信息来判断该方法应执行哪个“内部拦截器”。内部拦截器的设计是责任连接的设计。
  是不是贼简单。
  可以将AOP分成2个部分来扯,哦,不,来分析。。。
  第一:代理的创建;
  第二:代理的调用。
  注意:我们尽量少贴代码,尽量用文字叙述,因为面试的时候,也是文字叙述,不可能让你把代码翻出来的。。。所以,这里需要保持一定的简洁,想知道细节,看interface21源码,想知道的更细,看SpringFramework最新的master分支代码。
  代码位置:com.interface21.aop包下。
  开始分析(扯):
  代理的创建(按步骤):
  首先,需要创建代理工厂,代理工厂需要3个重要的信息:拦截器数组,目标对象接口数组,目标对象。
  创建代理工厂时,默认会在拦截器数组尾部再增加一个默认拦截器——用于最终的调用目标方法。
  当调用getProxy方法的时候,会根据接口数量大余0条件返回一个代理对象(JDKorCglib)。
  注意:创建代理对象时,同时会创建一个外层拦截器,这个拦截器就是Spring内核的拦截器。用于控制整个AOP的流程。
  代理的调用
  当对代理对象进行调用时,就会触发外层拦截器。
  外层拦截器根据代理配置信息,创建内层拦截器链。创建的过程中,会根据表达式判断当前拦截是否匹配这个拦截器。而这个拦截器链设计模式就是职责链模式。
  当整个链条执行到最后时,就会触发创建代理时那个尾部的默认拦截器,从而调用目标方法。最后返回。
  题外话:Spring的事务也就是个拦截器。
  来张不是很标准的UML图:
  架构师培训

关于调用过程,来张流程图:
  架构师培训

大概就是这样子,具体更多的细节,请看源码,如果还不是很明白的话,请咨询本人,本人不确定这个图是否画的很浅显易懂——最起码萌新看得懂才能称之为浅显易懂。
  相关推荐:【鲁班学院】java高级培训-能懂系列之Map详解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值