Spring-AOP和AspectJ的区别和联系
2014-12-05 11:29
253 查看
AOP是Spring框架的重要组成部分。目前我所接触的AOP实现框架有Spring AOP还有就是AspectJ(还有另外几种我没有接触过)。我们先来说说他们的区别:
AspectJ是一个比较牛逼的AOP框架,他可以对类的成员变量,方法进行拦截。由于 AspectJ 是 Java 语言语法和语义的扩展,所以它提供了自己的一套处理方面的关键字。除了包含字段和方法之外,AspectJ 的方面声明还包含切入点和通知成员。
Spring AOP依赖的是 Spring 框架方便的、最小化的运行时配置,所以不需要独立的启动器。但是,使用这个技术,只能通知从 Spring 框架检索出的对象。Spring的AOP技术只能是对方法进行拦截。
在spring AOP中我们同样也可以使用类似AspectJ的注解来实现AOP功能,但是这里要注意一下,使AspectJ的注解时,AOP的实现方式还是Spring AOP。Spring缺省使用J2SE动态代理来作为AOP的代理,这样任何接口都可以被代理,Spring也可以使用CGLIB代理,对于需要代理类而不是代理接口的时候CGLIB是很有必要的。如果一个业务对象没有实现接口,默认就会使用CGLIB代理。
Spring AOP和AscpectJ之间的关系:Spring使用了和aspectj一样的注解,并使用Aspectj来做切入点解析和匹配(AspectJ 5让第三方使用AspectJ的切入点解析和匹配引擎的工具API)。但是spring AOP运行时仍旧是纯的spring AOP,并不依赖于Aspectj的编译器或者织入器
AspectJ是一个比较牛逼的AOP框架,他可以对类的成员变量,方法进行拦截。由于 AspectJ 是 Java 语言语法和语义的扩展,所以它提供了自己的一套处理方面的关键字。除了包含字段和方法之外,AspectJ 的方面声明还包含切入点和通知成员。
Spring AOP依赖的是 Spring 框架方便的、最小化的运行时配置,所以不需要独立的启动器。但是,使用这个技术,只能通知从 Spring 框架检索出的对象。Spring的AOP技术只能是对方法进行拦截。
在spring AOP中我们同样也可以使用类似AspectJ的注解来实现AOP功能,但是这里要注意一下,使AspectJ的注解时,AOP的实现方式还是Spring AOP。Spring缺省使用J2SE动态代理来作为AOP的代理,这样任何接口都可以被代理,Spring也可以使用CGLIB代理,对于需要代理类而不是代理接口的时候CGLIB是很有必要的。如果一个业务对象没有实现接口,默认就会使用CGLIB代理。
Spring AOP和AscpectJ之间的关系:Spring使用了和aspectj一样的注解,并使用Aspectj来做切入点解析和匹配(AspectJ 5让第三方使用AspectJ的切入点解析和匹配引擎的工具API)。但是spring AOP运行时仍旧是纯的spring AOP,并不依赖于Aspectj的编译器或者织入器
相关文章推荐
- aop,spring aop,aspectj区别与联系
- SpringAop与AspectJ的联系与区别
- spring-AOP和AspectJ区别
- 【Spring AOP】【AspectJ】【CGLIB】【JDK动态代理】【JDK静态代理】区别
- spring中的AOP与AspectJ的区别?
- 比较springAOP和aspectJAOP区别
- 【第六章】 AOP 之 6.4 基于@AspectJ的AOP ——跟我学spring3
- Spring AOP @AspectJ 入门实例
- 实例简述Spring AOP之对AspectJ语法的支持
- zz 基于@AspectJ配置Spring AOP(之二)
- OOP与AOP的区别与联系
- 记录一下spring中AspectJ静态代码织入实现aop
- AOP 之 6.5 AspectJ切入点语法详解 ——跟我学spring3
- 《Spring攻略》第3章 Spring AOP和AspectJ支持
- 【第六章】 AOP 之 6.4 基于@AspectJ的AOP ——跟我学spring3
- spring aop, aspectj 注解声明切面
- 【第六章】 AOP 之 6.4 基于@AspectJ的AOP ——跟我学spring3
- AspectJ spring aop 记录某些类中方法执行时间实例
- Spring Aop入门之Aspectj
- spring aop 环绕通知 基于@aspectJ