zoukankan      html  css  js  c++  java
  • 关于项目中遇到的问题0000000001-- 拦截处理后的切面衍生

    可以借鉴:

    https://www.cnblogs.com/zdj-/p/8665454.html

    具体原因:Filter(过滤器),Interceptor(拦截器),无法对request请求的参数做处理以及控制器处理之后的response,所以切面出现.

    步骤:

    1.定义切面类 类上加上注解(@Aspect , @Compoent,@Configure)

    2.类里面定义切点@Pointcut("

    execution(* com.example.demo.controller.*.*(..))

    "),里面指定所对应的切片类(一般为Controller类)。

    3.定义通知类型

    (1)@Before(""),前置通知---

    可以对request请求做出处理,
    通过JoinPoint 获取通知的签名信息,如目标方法名,目标方法参数信息等。
    如:

     

    (2)@After(""),后置通知---

    处理完Controller请求之后的处理。

    (3)@Around(""),环绕通知------最先执行的就是环绕通知,然后前置通知,最后后置通知。

        * 环绕通知非常强大,可以决定目标方法是否执行,什么时候执行,执行时是否需要替换方法参数,执行完毕是否需要替换返回值。
            环绕通知第一个参数必须是org.aspectj.lang.ProceedingJoinPoint类型
         */
        @Around("excuController()")//环绕通知 execution(com.example.demo.controller.*.*(..))
        public Object handlerController(ProceedingJoinPoint proceed)throws Throwable{
            System.out.println("切面开始。。。。。");
            System.out.println("环绕通知方法名:"+proceed.getSignature().getName());
            try{
                proceed.proceed();
            }catch (Exception e){
                e.printStackTrace();
            }
            return null;
        }

    但是,在切面中我并没有感受到其带来的实际作用,因为都是viod方法........................这点后续再考虑下?????

    自古英雄出炼狱,从来富贵入凡尘。
  • 相关阅读:
    推荐一套 Spring Boot 快速开发框架,接私活、练手必备!
    C# 三种字节数组(byte[])拼接的性能对比测试
    C#//字节数组转16进制字符串
    C# 16进制与字符串、字节数组之间的转换
    linux脚本学习
    ubuntu12.04纪事
    linux常用命令
    linshi
    2022壬寅年天干四化
    码农们来一起讨论下数据库设计....
  • 原文地址:https://www.cnblogs.com/yunliu0603/p/11009967.html
Copyright © 2011-2022 走看看