锁定老帖子 主题:对Spring AOP框架实现的结构分析
精华帖 (1) :: 良好帖 (2) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-09-15
不错,简明扼要。
|
|
返回顶楼 | |
发表时间:2011-09-15
楼主分析的不错 但是,好像只是分析了aop的一部分 至于如何去增强,如何形成连 没有给与分析,比如spring到底是如何使用jdk的动态代理去实现的等问题没有做介绍
|
|
返回顶楼 | |
发表时间:2011-09-15
概念说的挺清楚,但是就是比较绕,如果能画一个时序图说明他们之间的关系可能更清楚点。之前把spring aop功能用在日志处理模块上。后来总结其实作用不大,因为每个操作记录的日志是不一样的。所以还得每个操作把日志内容保存在一个对象里传递到aop处理模块,其实也是挺麻烦的,还不如直接调用service方法直接保存日志。aop可能比较适合类似数据库事务这种资源处理。因为连接和具体业务没有关系只是作为一个公共处理类。
|
|
返回顶楼 | |
发表时间:2011-09-16
chenchuan 写道 楼主分析的不错 但是,好像只是分析了aop的一部分 至于如何去增强,如何形成连 没有给与分析,比如spring到底是如何使用jdk的动态代理去实现的等问题没有做介绍
确实,本文对Spring AOP框架的分析并没有涵盖所有角度, 我写本文的初衷是:希望能从较高的抽象层次将AOP的相关概念与一个AOP框架实现相对应起来,我们很容易找到介绍AOP概念的文章,也很容易找到对AOP框架源代码分析的文章,但是如果没有将这两者结合起来理解,就很容易产生断层。 本文为了简单,忽略了通知链,这个也是为了将最基本的流程描述清楚,然后针对流程中的某一环节扩展,就可以相对容易的清楚对流程中其它环节哪些是受影响的,哪些是不受影响的。 回头将把通知链的描述增加上。 ”如何去增强“,我个人认为SpringAOP框架解决问题的重点是在于对原材料的准备工作,比如:通知类的实现,切入点的描述,目标对象,有了这些我们就可以描述:在哪些目标对象(target)上的哪些方法(pointcut)使用哪些通知策略(before,after,around)及通知内容;如何去增强,这个处理逻辑就委托给了jdk的动态代理或cglib字节码增强来完成。 当然全面描述jdk的动态代理及cglib字节码增强,对SpringAOP框架的理解也是很有意义的。 |
|
返回顶楼 | |
发表时间:2011-09-16
programmer 写道 概念说的挺清楚,但是就是比较绕,如果能画一个时序图说明他们之间的关系可能更清楚点。之前把spring aop功能用在日志处理模块上。后来总结其实作用不大,因为每个操作记录的日志是不一样的。所以还得每个操作把日志内容保存在一个对象里传递到aop处理模块,其实也是挺麻烦的,还不如直接调用service方法直接保存日志。aop可能比较适合类似数据库事务这种资源处理。因为连接和具体业务没有关系只是作为一个公共处理类。
用时序图来描述执行过程是很好的建议,谢谢。 日志处理模块,如果是系统日志的话,和你描述的情况应该是一致的,并不是一个好的实践; 如果是审计日志的话,在好的设计前提下,还是很不错的实践,毕竟aop概念所带来的不同逻辑分离还是很有用的, 之前项目当中的审计日志实现虽然简单,但还是可用的,如:基于配置的某一个业务功能点是否选择日志记录,记录那些信息;当然,现有的实现灵活性还是不够的,回头将考虑增加不仅是日志记录的开关控制,还增加不同的记录策略选择,对于记录信息的配置化等。 |
|
返回顶楼 | |