Spring集成AspectJ的注解模式
来源:互联网 发布:淘宝冰点营销怎么使用 编辑:程序博客网 时间:2024/06/05 15:43
过去曾经记录过基础的Spring AOP:http://blog.csdn.net/sadfishsc/article/details/8875110
不过在实际工作中,这种非常早期的AOP写法由于比较繁琐,使用得并不多。大多数情况下使用的是spring集成aspectj提供的注解模式的AOP
如下是一个简单的例子:
1. Maven依赖
<dependency><groupId>org.aspectj</groupId><artifactId>aspectjrt</artifactId><version>1.8.5</version></dependency><dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>1.8.5</version></dependency>
2. spring配置
由于是注解模型,因此在spring的配置文件中需要的配置其实很少,主要有二:component-scan 和 aspectj-autoproxy:
<context:component-scan base-package="..." /><aop:aspectj-autoproxy proxy-target-class="true" />
3. 添加注解
@Aspect@Componentpublic class MyAspect {@Pointcut("execution(* cn.hibrant.liu.Test.run(..))")public void pointcut() {}@AfterReturning(value = "pointcut()", returning = "result")public void after(JoinPoint jp, JSONObject result) throws Exception {...}@AfterThrowing(value = "pointcut()", throwing = "exception")public void afterThrowingException(JoinPoint jp, Exception exception) {...}}
注解模式的aspectj中,切面逻辑、切入点等都需要集中定义在一个类中。其中:
- @Pointcut注解定义了切入点,它通过一个execution表达式来指定需要切入的类和方法,将本注解所在的方法与切入的方法绑定,后续的操作中都直接使用注解所在方法的方法名来映射被切入的方法(因而本方法只需为空即可)。pointcut可定义多个
- Aspectj提供了多种类型的切面逻辑:主要有@After(方法结束)、@AfterReturning(方法返回)、@AfterThrowing(方法抛出异常)、@Before(方法开始前)、@Around(方法前后)这五个针对方法的注入,以及其它一些针对变量声明的注入(不常用)
- 从注解的参数列表中可以看出该注解所对应的切面逻辑能提供什么样的参数,如:@AfterReturning的returning参数,可以指定目标方法的返回值在本切面逻辑中的变量名;@AfterThrowing的throwing参数,可以指定目标方法抛出的异常对象在本切面逻辑中的变量名。除此而外,所有的切面注解都必有两个参数:value和argNames,value用于指定pointcut的方法名,argNames则是目标方法各参数在本切面逻辑中的方法名
- 切面方法自带一个参数叫JoinPoint,其中保存了方法的一些元数据信息,最有用的便是可以从中直接获取参数对象列表,以及可以直接获取到作为注入点的目标对象
0 0
- Spring集成AspectJ的注解模式
- Spring基于注解@AspectJ的AOP
- Spring基于注解@AspectJ的AOP
- Spring-AOP:基于AspectJ注解的AOP
- Spring AspectJ注解
- Spring 与Aspectj集成
- Spring的AOP的AspectJ的开发:(注解)
- javaEE之------Spring-----》 AspectJ注解
- Spring AOP+AspectJ注解实例
- Spring AOP Aspectj 注解配置
- Spring Aspectj xml注解,JDBCSessionTemplate
- spring Ioc AspectJ注解args
- 基于@AspectJ注解的纯POJO Spring 2.x Aop
- Spring AOP的使用 基于全注解AspectJ
- Spring AOP之AspectJ的注解方式使用
- Spring Aop开发基于AspectJ注解方式的案例
- Spring使用AspectJ进行AOP的开发:注解方式
- Spring支持的AspectJ注解式切面编程
- 【翻译】Ext JS最新技巧——2016-3-4
- 干货锦集
- Oracle关于高速缓存区应用原理
- 二维数组中的查找
- sizeof 与 strlen
- Spring集成AspectJ的注解模式
- Java适配器模式、代理模式及动态代理
- Webpack笔记
- 中继器
- 理解OAuth 2.0
- c++ primer plus 第十七章 输入 输出 文件 IO iostream fstream
- Remove Duplicates from Sorted List II
- XmlSerializer 短信备份
- java初步学习之堆栈