Spring IOC 和Aspectj AOP

1.Aspectj AOP 是一套独立的AOP 解决方案,不仅限于java应用,不依赖其他方案,属于编译时增强,有自己单独的编译器。Spring AOP 是基于Spring 容器的的AOP解决方式,属于运行时增强,采用动态代理的方式实现(JDK动态代理,CGLIB动态代理),仅限于java应用使用。

           (图片来自:https://blog.csdn.net/weixin_42181142/article/details/101212351

2.两者联系在于Spring AOP 预留了整合Aspectj 的入口,同时使用了Aspectj的一些代码,如@Aspect @before 这些注解。

3.使用

(1)spring aop 使用和学习都比较简单,二期兼容aspectj的代码,但是他本身不是对象本身去执行,而是对象的代理去执行,这就意味着在运行时的开销要大一点。但是如果对AOP的需求不是特别深入的话仅仅使用spring aop 就可以完成了。

(2)aspectj 支持的功能更多一下,而且运行时的开销会更小,也更快具体用法请参考:

http://www.360doc.com/content/18/0209/22/33260087_729028400.shtml

4.spring aop 中的 < aop:aspect>与< aop:advisor>

在面向切面编程时,我们会使用< aop:aspect>,定义切面(切面包括通知和切点)
在进行事务管理时,我们会使用< aop:advisor>,引用通知和切点(切点和通知已经定义)

具体用法区别请看前面的几篇文章。

posted @ 2019-11-27 17:10  脆皮香蕉  阅读(1069)  评论(0编辑  收藏  举报