1.切入点的表达式

表达式格式:

execution([修饰符] 返回值类型 包名.类名.方法名(参数))

其他的代替:

<!-- 完全指定一个方法 -->
<!-- <aop:before method="log" pointcut="execution(public void com.spring.demo1.UserServiceImpl.save())"/> --> <!-- 修饰符可以不写,不是必要出现的 -->
<!-- <aop:before method="log" pointcut="execution(void com.spring.demo1.UserServiceImpl.save())"/> --> <!-- 返回值类型必须写,可以用【*】代替 -->
<!-- <aop:before method="log" pointcut="execution(* com.spring.demo1.UserServiceImpl.save())"/> --> <!-- 包名必须写,可以用【*】代替 -->
<!-- <aop:before method="log" pointcut="execution(* *.spring.demo1.UserServiceImpl.save())"/> --> <!-- 任意包结构,【*..*】 -->
<!-- <aop:before method="log" pointcut="execution(* *..*.UserServiceImpl.save())"/> --> <!-- 类必须写,可以用【*】代替 -->
<!-- <aop:before method="log" pointcut="execution(* *..*.*ServiceImpl.save())"/> --> <!-- 方法必须写,可以用【*】代替 -->
<!-- <aop:before method="log" pointcut="execution(* *..*.*ServiceImpl.save*())"/> --> <!-- 参数必须写,【*】代表一个参数,【..】代表任意参数 -->
<!-- <aop:before method="log" pointcut="execution(* *..*.*ServiceImpl.save*(..))"/> -->

2.AOP通知类型

1. 前置通知:
      * 在目标类的方法执行之前执行。
      * 配置文件信息:

<aop:after method="before" pointcut-ref="myPointcut3"/>

* 应用:可以对方法的参数来做校验

2. 最终通知:
        * 在目标类的方法执行之后执行,如果程序出现了异常,最终通知也会执行。
        * 在配置文件中编写具体的配置:

<aop:after method="after" pointcut-ref="myPointcut3"/>

* 应用:例如像释放资源

3. 后置通知:
        * 方法正常执行后的通知。        
        * 在配置文件中编写具体的配置:

<aop:after-returning method="afterReturning" pointcut-ref="myPointcut2"/>

* 应用:可以修改方法的返回值

4. 异常抛出通知:
        * 在抛出异常后通知
        * 在配置文件中编写具体的配置:

<aop:after-throwing method="afterThorwing" pointcut-ref="myPointcut3"/>

* 应用:包装异常的信息

5. 环绕通知:
        * 方法的执行前后执行。
        * 在配置文件中编写具体的配置:

<aop:around method="around" pointcut-ref="myPointcut2"/>

* 要注意:目标的方法默认不执行,需要使用ProceedingJoinPoint对来让目标对象的方法执行。

    public void around(ProceedingJoinPoint joinPoint){
System.out.println("环绕通知1...");
try {
// 手动让目标对象的方法去执行
joinPoint.proceed();
} catch (Throwable e) {
e.printStackTrace();
}
System.out.println("环绕通知2...");
}

转载请跟随-注:(https://www.cnblogs.com/NEWHOM/p/6803307.html)

分享知识-快乐自己:Spring切入点的表达式和通知类型的更多相关文章

  1. 7.Spring切入点的表达式和通知类型

    1.切入点的表达式 表达式格式: execution([修饰符] 返回值类型 包名.类名.方法名(参数)) 其他的代替: <!-- 完全指定一个方法 --> <!-- <aop ...

  2. JAVA框架 Spring AOP--切入点表达式和通知类型

    一:AOP的相关术语: 1)Joinpoint(连接点):所谓的连接点是指那些可以被拦截点,在spring中这些点是指方法.因为在spring中支持方法类型的连接点. 2)Pointcut(切入点): ...

  3. spring aop的五种通知类型

    昨天在腾讯课堂看springboot的视频,老师随口提问,尼玛竟然回答错了.特此记录! 问题: Spring web项目如果程序启动时出现异常,调用的是aop中哪类通知? 正确答案是: 异常返回通知. ...

  4. spring aop 的五种通知类型

    本文转自:http://blog.csdn.net/cqabl/article/details/46965197 spring aop通知(advice)分成五类: 前置通知[Before advic ...

  5. spring.net AOP通知类型

    上篇介绍了spring.net AOP的基本实现,其中有说到通知类型,首先在这里补充解释一下.最后出一个异常通知的实例,因为他的实现和别的通知有些不一样. 1.拦截环绕通知:在Spring中最基础的通 ...

  6. spring 切入点表达式

    spring表达式有多种的指示符,如: 切入点指示符用来指示切入点表达式目的,,在Spring AOP中目前只有执行方法这一个连接点,Spring AOP支持的AspectJ切入点指示符如下: exe ...

  7. Spring的通知类型,切入表达式写法

    转载自  https://www.cnblogs.com/ltfxy/p/9882697.html Spring中通知类型: 前置通知:目标方法执行之前进行操作,可以获得切入点信息 后置通知: 目标方 ...

  8. 十三 Spring的通知类型,切入表达式写法

    Spring中通知类型: 前置通知:目标方法执行之前进行操作,可以获得切入点信息 后置通知: 目标方法执行之后进行操作,可以获得方法的返回值 环绕通知:在目标方法执行之前和之后进行操作,可以终止目标方 ...

  9. Java开发学习(十六)----AOP切入点表达式及五种通知类型解析

    一.AOP切入点表达式 对于AOP中切入点表达式,总共有三个大的方面,分别是语法格式.通配符和书写技巧. 1.1 语法格式 首先我们先要明确两个概念: 切入点:要进行增强的方法 切入点表达式:要进行增 ...

随机推荐

  1. 第一次接触solr的过程记录

    1.以solr-4.6.0.tgz为例进行学习 2.第一步,看的是 tutorial.html(位于solr-4.6.0/docs目录),默认solr以jetty作为servlet容器 3.但是,如果 ...

  2. 【Mac + Pycharm】之实用东西以及配置东西

    一.新建.py文件时默认模板: 步骤:File => Preferences for New Projects => Editor => File and Code Template ...

  3. 【Python+selenium Wendriver API】之下拉框定位

    上代码: # coding:utf-8 from selenium import webdriver from selenium.webdriver.common.action_chains impo ...

  4. redis php 执行命令时,单引号和双引号的区别。

    #今天遇到一个坑爹的问题,写成单引号就不行,被原样输出了. /** *判断key是否存在 */ function exists_key($key){ return $this->cmd('EXI ...

  5. CSS3 - 鼠标移入移出时改变样式

    1,使用伪类实现样式切换伪类是CSS2.1时出现的新特性,让许多原本需要JavaScript才能做出来的效果使用CSS就能实现.比如实现下面的鼠标悬停效果,只要为:hover伪类应用一组新样式即可.当 ...

  6. 【BZOJ2724】[Violet 6]蒲公英 分块+二分

    [BZOJ2724][Violet 6]蒲公英 Description Input 修正一下 l = (l_0 + x - 1) mod n + 1, r = (r_0 + x - 1) mod n ...

  7. WinForm开发----关闭window窗体最好的办法

    最近有一人问道,如何切换窗体.一想到这,我就想,不就是new一个form,然后就show么? 可是我发现,当你控制某个属性的时候,不是不能控制,只是很麻烦而已.有没有好的办法?当然有,咋办? 最简单最 ...

  8. 九度OJ 1333:考研海报 (区间操作)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:738 解决:299 题目描述: sun是万千考研学子中的一员,他每天过着三点一线的生活. 学校里有一个公告栏,他每天都看到上面张贴着各种考研 ...

  9. ajax (异步js+xml)

    AJAX 基础 AJAX = 异步js+xml 通过与后台服务器进行少量数据交换,实现前台网页局部更新 XMLHttpRequest对象 是 AJAX 的基础 var xmlhttp; if (win ...

  10. 内存使用分析工具Valgrind简单用法

    转载自 http://www.cnblogs.com/sunyubo/archive/2010/05/05/2282170.html 暂时还未使用过,记录下,记录下,记录下 Valgrind的主要作者 ...