架构师培训:Spring AOP的原理

本文以通俗易懂的方式解析了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详解

提供了基于BP(Back Propagation)神经网络结合PID(比例-积分-微分)控制策略的Simulink仿真模型。该模型旨在实现对杨艺所著论文《基于S函数的BP神经网络PID控制器及Simulink仿真》中的理论进行实践验证。在Matlab 2016b环境下开发,经过测试,确保能够正常运行,适合学习和研究神经网络在控制系统中的应用。 特点 集成BP神经网络:模型中集成了BP神经网络用于提升PID控制器的性能,使之能更好地适应复杂控制环境。 PID控制优化:利用神经网络的自学习能力,对传统的PID控制算法进行了智能调整,提高控制精度和稳定性。 S函数应用:展示了如何在Simulink中通过S函数嵌入MATLAB代码,实现BP神经网络的定制化逻辑。 兼容性说明:虽然开发于Matlab 2016b,但理论上兼容后续版本,可能会需要调整少量配置以适配不同版本的Matlab。 使用指南 环境要求:确保你的电脑上安装有Matlab 2016b或更高版本。 模型加载: 下载本仓库到本地。 在Matlab中打开.slx文件。 运行仿真: 调整模型参数前,请先熟悉各模块功能和输入输出设置。 运行整个模型,观察控制效果。 参数调整: 用户可以自由调节神经网络的层数、节点数以及PID控制器的参数,探索不同的控制性能。 学习和修改: 通过阅读模型中的注释和查阅相关文献,加深对BP神经网络与PID控制结合的理解。 如需修改S函数内的MATLAB代码,建议有一定的MATLAB编程基础。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值