当前位置: 首页 > 知识库问答 >
问题:

使用aspectj的Spring AOP-如何记录内部方法?如何在方面类中包含最终的方法调用?AOP中正确的异常处理

邓阳嘉
2023-03-14
@RestController("/person")
public Person getpersonInfo() {
    try {
        // (...)
        getValidPerson();
        return response; // response including person info
    }
    catch (Exception ex) {
        return response; // response stating the exception condition
    }
}

请包括您的宝贵建议。

共有1个答案

梁丘翔
2023-03-14

>

  • 如果您正在讨论诸如This.SomeOtherMethod()(没有This.)之类的自调用,则它不起作用,因为您没有使用代理。因此,您可以配置Spring来公开代理对象并在对其调用方法之前手动获取对代理的引用,或者通过加载时编织从Spring AOP切换到AspectJ。

    从技术上讲,代理在运行时生成一个子类。但不能扩展final类,也不能重写final方法。因此,您无法使用代理来处理它们。同样,如果您认为需要这样做,请切换到完整的AspectJ。

    这可以在@around建议中完成,如下所示:

    @Around("... your pointcut ...")
    public Object myAdvice(final ProceedingJoinPoint thisJoinPoint) throws Throwable {
        System.out.println(thisJoinPoint);
        try {
            return thisJoinPoint.proceed();
        }
        catch (Exception e) {
            e.printStackTrace();
            return "some other object";
        }
    }
    

  •  类似资料:
    • 有多篇关于如何在Spring AOP中拦截内部方法调用的帖子。但是找不到任何与使用AspectJ排除内部方法相关的帖子。我们希望使用AspectJ编译时编织来实现它promise的运行时性能改进。 如果另一个类的方法调用了下面类TestService中的任何公共方法,则应该拦截该调用。但是,不应该截取从method1()到method2()的内部调用。我们只希望拦截器对每个对象只拦截一次。 一个示

    • 问题内容: 我正在尝试在某些特定异常发生时添加一些监视。例如,如果我有这样的一个方面: 和测试类: 作为输出,我将得到: 我想知道是否有办法在引发异常后立即拦截方法执行,在建议中做点什么,然后继续在相应的catch块中执行代码?这样,如果我打电话给我,我会得到: 问题答案: 是的你可以。您需要切入点: 假设类在包中,则日志输出: 更新: 如果您想知道异常处理程序的位置,有一个简单的方法:使用封闭的

    • 我正在尝试在发生特定异常时添加一些监视。例如,如果我有这样一个方面: 和测试等级: 作为输出,我将得到: 我想知道是否有办法在抛出异常之后拦截方法执行,在我的建议中做些什么,然后继续在相应的catch块中执行代码?因此,如果我调用我可以得到:

    • 问题内容: 尝试在Parent类中创建1个接口和2个具体类。这将使封闭类成为内部类。 现在,我真的不确定如何在静态main()方法中创建C类的对象并调用C类的call()方法。现在我遇到了问题: 问题答案: 这里的内部类不是静态的,因此您需要创建一个外部类的实例,然后调用new, 但是在这种情况下,您可以将内部类设为静态, 那就可以使用了

    • 本文向大家介绍Java中断异常的正确处理方法,包括了Java中断异常的正确处理方法的使用技巧和注意事项,需要的朋友参考一下 处理InterruptedException 这个故事可能很熟悉:你正在写一个测试程序,你需要暂停某个线程一段时间,所以你调用 Thread.sleep()。然后编译器或 IDE 就会抱怨说 InterruptedException 没有抛出声明或捕获。什么是 Interru

    • 一些日志记录需要在类的静态方法执行前后完成。我试图使用Spring AOP实现这一点,但它不起作用,对于普通方法来说,它是起作用的。请帮助我理解如何实现这一点,如果可以使用注释来完成,那就太好了。