本文主要是介绍AOP编程的基本概念与idea编辑器的配合体验过程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
《AOP编程的基本概念与idea编辑器的配合体验过程》文章简要介绍了AOP基础概念,包括Before/Around通知、PointCut切入点、Advice通知体、JoinPoint连接点等,说明它们...
初始化一个基础的 AOP 程序
// 作为演示程序,没有更具体的方法体 @Slf4j @Component @ASPect public编程 class TryAspect { @Before("execution(* biz.baijing.service.impl.DeptServiceImpl.*(..))") // * 任意方法 , .. 形参任意 public void before(){ log.info("Before ..."); } public void after(){ log.info("After ..."); } public void around(){ log.info("Around bChina编程efore ..."); // 调用目标方法 log.info("around after"); } public void afterReturning(){ log.info("AfterReturning ..."); } public void afterThrowing(){ log.info("After Throwing ..."); } }
Before
注意编辑器这个位置的 m 的变化。
点击 m 提示了
@Before("execution(* biz.baijing.service.impl.DeptSeJQbEfAgMjWrviceImpl.*(..))")
切面目标的方法。
Around
before 是半圆;around 是完整的圆形。
同样点击会出现 execution 的指向的目标方法
注解: m = methods
对 around 方法,完善之后
@Around("execution(* biz.baijing.service.impl.DeptServiceImpl.*(..))") public Object around(ProceedingJoinPoint proceedingjoinPoint) throws Throwable{ log.info("Around before ..."); // 调用目标方法 Object proceed = proceedingjoinPoint.proceed(); log.info("around after"); return proceed; }
Advise — 通知
方法体,是抽取的一组公共的实现逻辑。
log.info("Around before ..."); // 调用目标方法 Object proceed = proceedingjoinPoint.proceed(); log.info("around after"); return proceed;
PointCut — 切入点
方法实际针对的目标方法的引入,是AOP方法和目标类方法的连接;
通过切入点表达式关联。
"execution(* biz.baijing.service.impl.DeptServiceImpl.*(..))"
备注: * : 所有 DeptServiceImpl 下的方法 ; .. : 形参任意。
Acpect — 切面
advise 和 pointcut 的连接。
@Around("execution(* biz.baijing.service.impl.DeptServiceImpl.*(..))") public Object around(ProceedingJoinPoint proceedingjoinPoint) throws Throwable{ log.info("Around before ..."); // 调用目标方法 Object proceed = proceedingjoinPoint.proceed(); log.info("around after"); return proceed; }
描述这个方法的类,就叫: 切面类。
@Slf4j @Component @Aspect public class TryAspect { @Before("execution(* biz.baijing.service.impl.DeptServiceImpl.*(..))") // * 任意方法 , .. 形参任意 public void before(){ log.info("Before ..."); } public void after(){ log.info(http://www.chinasem.cn"After ..."); } @Around("execution(* biz.baijing.service.impl.DeptServiceImpl.*(..))") public Object around(ProceedingJoinPoint proceedingjoinPoint) throws Throwable{ log.info("Around before ..."); // 调用目标方法 Object proceed = proceedingjoinPoint.proceed(); log.info("around after"); return proceed; } public void afterReturning(){ log.info("AfterReturning ..."); } public void afterThrowing(){ log.info("After Throwing ..."); } }
TryAspect —— 切面类。
Target — 目标对象
biz.baijing.servic编程e.impl.DeptServiceImpl
DeptServiceImpl —— 就是目标对象。
JoinPoint — 连接点
被 AOP 控制的对象方法,即:
biz.baijing.service.impl.DeptServiceImpl
下的所有方法
这里被 红色 m 标识的方法就是 JoinPoint 。
结果
总结
这篇关于AOP编程的基本概念与idea编辑器的配合体验过程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!