如何配置AOP查看:Spring、Hello
AOP

1.对于拦截规则@Pointcut的介绍:

  1. @Pointcut("execution (* cn.raffaello.service..*.*(..))")
  2. private void anyMethod(){} // 声名一个切入点,声名方式比较奇特

注解:

// *      返回值类型  *为所有类型的返回值

// cn.raffaello.service  所拦截的包

// ..      如果使用..则表示要对拦截的包及下的所有子包进行拦截

// *.*   类.方法名    所拦截的包下的类.方法

// (..)   所拦截方法的参数 ..为不限定参数及类型  例(String,Integer,String)

2.前置通知、后置通知、最终通知、环绕通知、例外通知在Spring处理中存在的位置:

  1. @Before("anyMethod()")
  2. public void doAccessCheck(){
  3. System.out.println("前置通知");
  4. }
  5. @AfterReturning("anyMethod()")
  6. public void doAfterReturning(){
  7. System.out.println("后置通知");
  8. }
  9. @After("anyMethod()")
  10. public void doAfter(){
  11. System.out.println("最终通知");
  12. }
  13. @Around("anyMethod()")
  14. public void doAround(ProceedingJoinPoint pjp) throws Throwable{
  15. System.out.println("环绕通知前");
  16. pjp.proceed(); // proceed() 执行业务方法,可以在此前后添加拦截判断,权限状态等
  17. System.out.println("环绕通知后");
  18. }
  19. @AfterThrowing("anyMethod()")
  20. public void doAfterThrowing(){
  21. System.out.println("例外通知"); // 异常通知
  22. }

3.拦截特定参数、返回值、异常的方法

  1. // 拦截只有一个参数,并且参数类型为String
  2. @Before("anyMethod() && args(name)")
  3. public void doAccessCheck(String name){
  4. System.out.println("前置通知 Name:"+name);
  5. }
  1. // 拦截返回值类型是String的方法
  2. @AfterReturning(pointcut="anyMethod()",returning="returnValue")
  3. public void doAfterReturning(String returnValue){
  4. System.out.println("后置通知 return:"+returnValue);
  5. }
  1. // 拦截异常类型为Exception的异常
  2. @AfterThrowing(pointcut="anyMethod()",throwing="ex")
  3. public void doAfterThrowing(Exception ex){
  4. System.out.println("例外通知 例外:"+ex); // 异常通知
  5. }

Spring、AOP详解的更多相关文章

  1. 【转载】Spring AOP详解 、 JDK动态代理、CGLib动态代理

    Spring AOP详解 . JDK动态代理.CGLib动态代理  原文地址:https://www.cnblogs.com/kukudelaomao/p/5897893.html AOP是Aspec ...

  2. Spring AOP详解(转载)所需要的包

    上一篇文章中,<Spring Aop详解(转载)>里的代码都可以运行,只是包比较多,中间缺少了几个相应的包,根据报错,几经百度搜索,终于补全了所有包. 截图如下: 在主测试类里面,有人怀疑 ...

  3. Spring AOP详解及简单应用

    Spring AOP详解   一.前言 在以前的项目中,很少去关注spring aop的具体实现与理论,只是简单了解了一下什么是aop具体怎么用,看到了一篇博文写得还不错,就转载来学习一下,博文地址: ...

  4. 转:Spring AOP详解

    转:Spring AOP详解 一.前言 在以前的项目中,很少去关注spring aop的具体实现与理论,只是简单了解了一下什么是aop具体怎么用,看到了一篇博文写得还不错,就转载来学习一下,博文地址: ...

  5. Spring Aop 详解二

    这是Spring Aop的第二篇,案例代码很详解,可以查看https://gitee.com/haimama/java-study/tree/master/spring-aop-demo. 阅读前,建 ...

  6. [Spring学习笔记 5 ] Spring AOP 详解1

    知识点回顾:一.IOC容器---DI依赖注入:setter注入(属性注入)/构造子注入/字段注入(注解 )/接口注入 out Spring IOC容器的使用: A.完全使用XML文件来配置容器所要管理 ...

  7. Spring系列(四):Spring AOP详解

    一.AOP是什么 AOP(面向切面编程),可以说是一种编程思想,其中的Spring AOP和AspectJ都是现实了这种编程思想.相对OOP(面向过程编程)来说,提供了另外一种编程方式,对于OOP过程 ...

  8. Spring Aop 详解一

    Aop 是一个编程思想,最初是一个理论,最后落地成了很多的技术实现. 我们写一个系统,都希望尽量少写点儿重复的东西.而很多时候呢,又不得不写一些重复的东西.比如访问某些方法的权限,执行某些方法性能的日 ...

  9. Spring AOP详解

    一.前言 在以前的项目中,很少去关注spring aop的具体实现与理论,只是简单了解了一下什么是aop具体怎么用,看到了一篇博文写得还不错,就转载来学习一下,博文地址:http://www.cnbl ...

  10. Spring AOP详解 、 JDK动态代理、CGLib动态代理

    AOP是Aspect Oriented Programing的简称,面向切面编程.AOP适合于那些具有横切逻辑的应用:如性能监测,访问控制,事务管理以及日志记录.AOP将这些分散在各个业务逻辑中的代码 ...

随机推荐

  1. SQL Server 存储过程自启动

    前期准备: use master; create table LoginLog(LoginName nvarchar(32),LoginTime datetime); create procedure ...

  2. javascript对象继承的实现

    现在有两个对象,需要实现Chinese类型对象对Person类型对象的继承. 这里分两部分,属性和方法. 属性可以直接用构造函数的方法实现继承,而方法则要通过原型链来实现继承. 先解释什么是原型链,每 ...

  3. Windows消息拦截技术的应用(作者博客里有许多相关文章)

    民航合肥空管中心 周毅 一.前 言 众所周知,Windows程式的运行是依靠发生的事件来驱动.换句话说,程式不断等待一个消息的发生,然后对这个消息的类型进行判断,再做适当的处理.处理完此次消息后又回到 ...

  4. C语言的本质(14)——不完全类型和复杂声明

    ISO 将 C 的类型分为三个不同的集合: 函数.对象和不完全类型三大类.函数类型很明显:对象类型包含其他一切,除非不知道对象的大小.该标准使用术语"对象类型"指定指派的对象必须具 ...

  5. 基于TCP套接字实现的简单Demo

    由于代码的注释已经很详尽了,所以这里不再作过多说明.仅仅贴出代码和结果图. 值得注意的是必须先启动server程序再启动client. Server: #include <WINSOCK2.H& ...

  6. hdu 1242 Rescue_bfs+优先队列

    翻出以前的代码看看 题意:走迷宫,遇到敌人要花一分钟. #include<iostream> #include<queue> using namespace std; char ...

  7. Eclipse 支持jQuery 自动提示

    1.下载jQuery文件 http://download.csdn.net/detail/emoven/6294377 2.设置spket Window -> Preferences -> ...

  8. .NET程序性能优化基本要领

    想了解更多关于新的编译器的信息,可以访问     .NET Compiler Platform ("Roslyn") 基本要领 在对.NET 进行性能调优以及开发具有良好响应性的应 ...

  9. 使用VS2003 发送Email

    使用VS2003发送Email与之后VS2005版本及以上VS版本不一样,记录一下, 需要引用using System.Web.Mail; public void SendEmail() { try ...

  10. JSP简介

    论坛 博客 微论 问答 游戏厅 天涯客 读书 更多 手机 服务 登录 注册   聚焦 民生 文学 旅游 财经 汽车 IT数码 时尚 情感 娱乐 视频 更多 北京 上海 广东 更多 天涯部落> J ...