• 关于项目中遇到的问题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方法........................这点后续再考虑下?????

    自古英雄出炼狱,从来富贵入凡尘。
  • 相关阅读:
    十四
    十三
    十二
    十一
    用Linq从一个集合选取几列得到一个新的集合-可改列名
    LINQ入门(完结篇)
    LINQ入门(下篇)
    LINQ入门(中篇)
    LINQ入门(上篇)
    MVC中View往Controllers传数据的方式-已发
  • 原文地址:https://www.cnblogs.com/yunliu0603/p/11009967.html
Copyright © 2020-2023  润新知