spring boot aop
环境 lombok + spring boot + spring aop:
import lombok.extern.slf4j.Slf4j; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.*; import org.springframework.stereotype.Component; import java.util.Arrays; import java.util.List; /** * aop 测试 * * @author lixingwu */ @Aspect @Component @Slf4j public class TestAspect { /** * 定义要切入的点 * 使用 execution 进行匹配 * 这里匹配的是 BackInfoVoController 下面的的所有 public 方法 * 这样调用了里面的方法,就会执行切点的定义的方法 * 该方法没有方法体,只用于定义切点,即使写了方法体也不会被执行到 * * @author "lixingwu" */ @Pointcut("execution(public * com.zhwlt.logistics.controller.base.CommentCtl.logout(..))") public void test() { } /** * 方法描述:环绕通知. * 创建时间:2018-09-25 15:31:47 * * @param pjp 被切对象 * @author "lixingwu" */ @Around(value = "test()", argNames = "pjp") public Object aroundTest(ProceedingJoinPoint pjp) throws Throwable { log.debug("==========环绕通知 开始=========="); Object obj = pjp.proceed(); log.debug("==========环绕通知 结果=========="); log.debug("==========" + obj + "=========="); log.debug("==========环绕通知 结束=========="); return obj; } /** * 方法描述:进入切点时,先执行该方法. * 创建时间:2018-09-25 15:21:22 * * @param joinPoint 被切对象 * @author "lixingwu" */ @Before("test()") public void beforeTest(JoinPoint joinPoint) { printJoinPoint(joinPoint); log.debug("==========调用方法之前==========="); } /** * 方法描述:在切点执行完成后执行该方法. * 创建时间:2018-09-25 15:26:48 * * @param joinPoint 被切对象 * @author "lixingwu" */ @After("test()") public void afterTest(JoinPoint joinPoint) { printJoinPoint(joinPoint); log.debug("==========调用方法之后=========="); } /** * 方法描述:切点异常通知. * 创建时间:2018-09-25 15:35:06 * * @param joinPoint 被切对象 * @param ex 异常信息 * @author "lixingwu" */ @AfterThrowing(pointcut = "test()", throwing = "ex") public void afterThrowing(JoinPoint joinPoint, Exception ex) { printJoinPoint(joinPoint); log.debug(ex.getMessage()); log.debug("==========切点发生异常=========="); } /** * 打印 JoinPoint 对象的信息 * * @param joinPoint 切点对象 */ public void printJoinPoint(JoinPoint joinPoint) { String methodName = joinPoint.getSignature().getName(); List<Object> args = Arrays.asList(joinPoint.getArgs()); log.debug("方法名[" + methodName + "],参数" + args + ""); } }
原创内容,如果你觉得文章还可以的话,不妨点个赞支持一下!转载请注明出处。