基于@Aspect的AOP配置
来源:互联网 发布:java反序列化代码 编辑:程序博客网 时间:2024/05/22 10:38
1、Spring除了支持Schema方式配置AOP,还支持注解方式:使用@Aspect来配置
2、Spring默认不支持@Aspect风格的切面声明,通过如下配置开启@Aspect支持:
Java代码 <aop:aspectj-autoproxy/>
3、通过以上配置,Spring就能发现用@Aspect注解的切面内并把它应用到目标对象上。
4、定义一个切面:
Java代码
5、后置返回通知:
Java代码
7、后置最终通知:
Java代码
Java代码
方法before前执行.....
方法环绕start.....
我看.....................
方法after执行.....
方法环绕end.....
方法afterReurning执行.....
参考自:http://jinnianshilongnian.iteye.com/blog/1418598
http://ch-space.iteye.com/blog/493956
2、Spring默认不支持@Aspect风格的切面声明,通过如下配置开启@Aspect支持:
Java代码 <aop:aspectj-autoproxy/>
3、通过以上配置,Spring就能发现用@Aspect注解的切面内并把它应用到目标对象上。
4、定义一个切面:
Java代码
@Aspect public class AspectStyle { @Before("execution(* com.sxit..*.*(..))") public void before(){ System.out.println("方法执行前执行....."); } }
5、后置返回通知:
Java代码
@AfterReturning("execution(* com.sxit..*.*(..))") public void afterReturning(){ System.out.println("方法执行完执行....."); }
6、后置异常通知:
Java代码@AfterThrowing("execution(* com.sxit..*.*(..))") public void throwss(){ System.out.println("方法异常时执行....."); }
7、后置最终通知:
Java代码
@After("execution(* com.sxit..*.*(..))") public void after(){ System.out.println("方法最后执行....."); }
8、环绕通知:
Java代码@Around("execution(* com.sxit..*.*(..))") public Object around(ProceedingJoinPoint pjp){ System.out.println("方法环绕start....."); try { pjp.proceed(); } catch (Throwable e) { e.printStackTrace(); } System.out.println("方法环绕end....."); }
9、按上面的每一个通知都要写一个定义,其实这部分可以抽出来,定义个一个公共的切入点。
Java代码package com.sxit; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.After; import org.aspectj.lang.annotation.AfterReturning; import org.aspectj.lang.annotation.AfterThrowing; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; import org.aspectj.lang.annotation.Pointcut; @Aspect public class AspectStyle { @Pointcut("execution(* com.sxit..*.*(..))") public void init(){ } @Before(value="init()") public void before(){ System.out.println("方法执行前执行....."); } @AfterReturning(value="init()") public void afterReturning(){ System.out.println("方法执行完执行....."); } @AfterThrowing(value="init()") public void throwss(){ System.out.println("方法异常时执行....."); } @After(value="init()") public void after(){ System.out.println("方法最后执行....."); } @Around(value="init()") public Object around(ProceedingJoinPoint pjp){ System.out.println("方法环绕start....."); Object o = null; try { o = pjp.proceed(); } catch (Throwable e) { e.printStackTrace(); } System.out.println("方法环绕end....."); return o; } }10、打印信息:
Java代码
方法before前执行.....
方法环绕start.....
我看.....................
方法after执行.....
方法环绕end.....
方法afterReurning执行.....
参考自:http://jinnianshilongnian.iteye.com/blog/1418598
http://ch-space.iteye.com/blog/493956
阅读全文
0 0
- 基于@Aspect的AOP配置
- 基于@Aspect的AOP配置
- 基于@Aspect的AOP配置
- 基于@Aspect的AOP配置
- 基于@Aspect的AOP配置
- 基于@Aspect的AOP配置
- 基于@Aspect的AOP配置
- 基于@Aspect的AOP配置
- 基于@Aspect的AOP注解配置
- 基于@Aspect的AOP
- Spring框架 基于@Aspect的AOP配置(六)
- 第三章 AOP 基于@Aspect的AOP
- 基于注解@Aspect的AOP实现
- Spring -- AOP入门基础&基于Aspect的AOP通知用法
- Spring AOP 的@Aspect
- 基于Schema配置的Aspect Oriented programming
- spring 基于Aspect和注解的切面编程(aop)
- Aop之Xml aspect配置
- mongodb 查询数据
- /home/zp/my-imx6/03_tools/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux/bin/arm-linux-gnueabihf-g
- [置顶] 二分查找各种情况大总结
- P1017 进制转换
- --------------------------------开始动手自己写一个简易的操作系统-----------------------------------------0
- 基于@Aspect的AOP配置
- LeetCode653. Two Sum IV
- 线段树 (更新区间查询区间)poj 3468 A Simple Problem with Integers
- 【JDBC笔记】JDBC基础知识
- SpringData-jpa maven项目 cannot resolve symbol 'JdbcTemplate' 飘红
- Maven管理(依赖范围,依赖传递,依赖冲突,依赖可选,依赖排除)
- ubuntu 16.10 安装uboot-mkimage
- 【Openjudge, NOI,枚举】1749数字方格
- DOS原理和常用命令详解示例