springboot @Aspect 切面接口

好久没写文章了  更新一个小技术点关于@Aspect 切面接口的应用,不多说上代码

@Slf4j
@Aspect
@Component
public class InterceptorAspect {


 
    @Pointcut("execution(public * com.www.baidu.job..*.*(..))")
    public void Pointcut() {
    }//签名

    @Before(value = "Pointcut()")
    public void logBeforeController(JoinPoint joinPoint) {
        RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();//这个RequestContextHolder是Springmvc提供来获得请求的东西
        HttpServletRequest request = ((ServletRequestAttributes) requestAttributes).getRequest();
        // 记录下请求内容
        log.info("已经进入Aspect---Before----- : ", StringUtils.join(joinPoint.getArgs(), ";"));
    }

    @AfterReturning(value = "Pointcut()", returning = "rvt")
    public void after(JoinPoint joinPoint, Object rvt) {
        log.info("已经进入Aspect--after----- : ");

        //获取类型参数,获取注解中的参数
        MethodSignature signature = (MethodSignature) joinPoint.getSignature();
        Method method = signature.getMethod();
        InserVolumeAspect action = method.getAnnotation(InserVolumeAspect.class);
        log.info("类型:" + action.type());//通过反射获得注解上的属性 然后做相关操作

     
        //下面就是获取该接口的返回参数
        MethodSignature sig1 = (MethodSignature) joinPoint.getSignature();
        Method method1 = sig1.getMethod();
        if (null != rvt && null != method1.getDeclaringClass()) {
            try {
                log.info("{} . {} : 返回数据:{}", method1.getDeclaringClass().getName(), method1.getName(), new Gson().toJson(rvt));
            } catch (Exception e) {

            }
        }
    }
}

这就是关于aop切面的应用,也可以做系统接口的日志,里边参数的意思百度下都有   简单说下  after函数是方法接口执行完在执行的函数   before是进入方法先执行,比如做成切面的日志接口就可以使用before函数

最后提醒应用者重要的一点   这个自定义注解可以不标注在controller上  但是 AfterReturning返回的参数依然使你controller的返回值

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

尼古拉斯++

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值