分享知识-快乐自己:Spring切入点的表达式和通知类型
2018-09-11 18:44
876 查看
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_Boot 中文返回给浏览器乱码 解析成问号?? fastJson jackJson
- 分享知识-快乐自己:Spring中的(三种)异常处理机制
- 分享知识-快乐自己:自定义struts2类型转换的全局与局部错误信息。
- 7.Spring切入点的表达式和通知类型
- 分享知识-快乐自己:SpringMvc中 页面日期格式到后台的类型转换
- 分享知识-快乐自己:SpringBoot集成热部署配置(一)
- 分享知识-快乐自己:SpringBoot结合使用拦截器(判断是否用户是否已登陆)
- 分享知识-快乐自己:springboot之thymeleaf (1):简单的thymeleaf例子
- 分享知识-快乐自己:intellij Idea报错Could not autowire. No beans of...
- 分享知识-快乐自己:初识 Hibernate 概念片(一)
- 分享知识-快乐自己:2017IDEA破解教程
- 分享知识-快乐自己:Hibernate 中Criteria Query查询详解
- 分享知识-快乐自己:MySQL中的约束,添加约束,删除约束,以及一些其他修饰
- 分享知识-快乐自己:Hibernate 关联映射
- 分享知识-快乐自己:SpringMvc中的四种数据源及相关配置(整合快速集成开发)
- 分享知识-快乐自己:SpringMvc整合遇到-前台传JSON参数,后台实体类对象接收
- 分享知识-快乐自己:Hibernate 中的 HQL 语句的实际应用
- 分享知识-快乐自己:SpringMvc中的单多文件上传及文件下载
- 分享知识-快乐自己:Oracle创建用户、角色、授权、建表
- 分享知识-快乐自己: Oracle数据库实例、用户、表、表空间之间关系