@Around环绕增强
虽然Around功能强大,但通常需要在线程安全的环境下使用。因此,如果使用普通的Before、AfterReturing增强方法就可以解决的事情,就没有必要使用Around增强处理了。
Proceedingjoinpoint 继承了 JoinPoint 。是在JoinPoint的基础上暴露出 proceed 这个方法。proceed很重要,这个是aop代理链执行的方法。暴露出这个方法,就能支持 aop:around 这种切面(而其他的几种切面只需要用到JoinPoint,这跟切面类型有关), 能决定是否走代理链还是走自己拦截的其他逻辑
一、项目结构
二、定义切面类、连接点注解类
PointCut连接点注解类
说明:
这是一个注解类型:@interface
类中设置了一个methodName属性;
定义切面类
说明:
- @Around定义了此方法为 Around增强处理方法;
- @annotation(around):参数around应该与增强处理方法中的参数名保持一致,该声明指定了pointcut连接点,也可以使用其他方式,如:
pointcut="execution(* org.crazyit.app.service.impl.*.*(..))";
- point.proceed()调用了目标方法,并获取其返回值;
三、为待增强的方法--添加注解声明
在上面定义@Around增强时,通过@annotation() 方式指定了pointcut,其中方法参数为连接点注解类aroundAuthority,
如果需要对某一方法进行增强,只需要在相应的方法上添加上此注解即可,如下:
四、AspectJ配置文件
五、测试类
六、测试结果
可能的输出结果:
@Around环绕增强相关推荐
- Spring-AOP 通过配置文件实现 环绕增强
文章目录 概述 实例 概述 环绕增强允许在目标类方法调用前后织入横切逻辑,它综合实现了前置,后置增强两者的功能. 实例 代码已托管到Github-> https://github.com/yan ...
- springBoot AOP环绕增强、自定义注解、log4j2、MDC
(一)log4j2 maven配置 <dependency><groupId>org.springframework.boot</groupId><artif ...
- 前置,后置,环绕,异常增强(示例)
----------------------------------基础架构: 前置增强 ------------------------------------代码演示: public interf ...
- aop的四种增强以及JDK动态代理、Cglib动态代理
动态代理 AOP底层实现:有接口自动应用的就是JDK动态代理 (1).JDK 在运行时运行时注入 本质:在内存中构建出接口的实现类 特点:被代理对象,必须有接口 实例: import java.lan ...
- Spring AOP增强(Advice)
Sring AOP通过PointCut来指定在那些类的那些方法上织入横切逻辑,通过Advice来指定在切点上具体做什么事情.如方法前做什么,方法后做什么,抛出异常做什么. 再来看一下图 定义Point ...
- 定义一个包含增强方法的javaBean(最终增强)
使用Schema 1.AroundLogger类 1 //定义一个包含增强方法的javaBean 2 public class AroundLogger{ 3 //注解方式的环绕增强处理 4 priv ...
- Java中after注解_Spring(12):使用注解(@AfterThrowing/@After/@Around)实现AOP异常增强与实例...
2017/12/31 [1]异常抛出增强: 在包(com\smbms\AopLog)新建一个ErrorLogger.java: package com.smbms.AopLog; import org ...
- Spring : Spring AOP 中的增强(Advice)或者通知
1.美图 2.概述 概念参考:Spring :Spring AOP 中的一些术语 很多人将增强理解为通知,但是理解为增强会更加准确,因为它表示在连接点上执行的行为,这个行为是目标类类所没有的,是为目标 ...
- 【spring aop】连接点(Jointpoint)、切入点(Pointcut)、增强(Advice)、方面/切面(Aspect、Advisor)
文章目录 前言 1. 先来回顾一下AOP中的一些术语 2. 增强方式简介 2.1 MethodBeforeAdvice前置增强 2.2 AfterReturningAdvice后置增强 2.3 Thr ...
最新文章
- 5G通信应用到无人驾驶要解决什么问题
- 对高并发流量控制的一点思考
- java 多线程同步问题_Java多线程同步问题:一个小Demo完全搞懂
- dispatcherServlet 真正处理请求的源码解析
- Mac怎么合并文件夹
- js实现页面滚动,菜单固定
- 计算机毕业设计-ssm超市进销存管理系统(项目+类似文档)超市仓库管理系统javaweb-超市库存预警管理系统源码
- SI4463配置软件wds3
- T3及报税软件报表使用无线打印机打印凭证没反应
- word一打字就有下划线_[word文档打字有下划线]下划线粗细不一致的原因:控制Word下划线与文字的距离...
- 爆款公众号:如何打造爆款公众号文章?公众号文章如何突破10w+?
- Video Caption Tutorial
- 入门3D建模学习教程,让你最快从小白到建模大师!
- 变态矿工源码、闪电鸡app等软件的应用及发展方向的个人见解
- 前段听一个仁兄说jbpm4 改变了很多
- Android openGl开发详解(二)——通过SurfaceView,TextureView,GlSurfaceView显示相机预览(附Demo)
- 【DBA笔记2】Oracle之定期清理inactive会话
- MySQL修改表的字段长度
- 期末总结 : 2019-2020(2)
- python 绘制五星红旗(包含三角函数)
热门文章
- 转]udev实现原理(含检测U盘拔插例子)检测热插拨 (hotplug)
- 残疾人求职阿里巴巴等了八年!好辛苦!
- ArcGIS之经纬度表格数据转矢量
- 2023年全国最新二级建造师精选真题及答案56
- DiskGenius 5.4.6.1441 Portable
- CCF201509-1数列分段(C语言)
- java和vr联系_VR,AR,MR的区别与联系
- 龙讯LT8911EXB高性能MIPI转EDP分辨率1080P概述
- 微信小程序---手写签名(签字版)
- The Civil War in France translation04