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

按声明的返回类型列出的Spring AOP切入点

窦夜洛
2023-03-14

我有以下类和方法:

public class Hello {
    public String getGreetingA() {
        return "hello";
    }
    public boolean getGreetingB() {
        return false;
    }
}

以及以下方面:

@Aspect
public class HelloAspect {

    @Pointcut("execution (public String Hello.*(..)")
    public void pointcut() {}

    @Around("pointcut")
    public Object advice(ProceedingJoinPoint pjp) {
        // do something...
        Object result = pjp.proceed;
        // do something...
        return result;
    }
}

目前,对这两个类方法执行通知。我希望方面只针对返回字符串类型的方法。似乎执行切入点在这里没有那么重要(因为通知是围绕着类型的,执行通知时返回值还不存在)。

在Spring AOP中,有没有一个简单的原因可以解释为什么要在连接点上定义一个指向目标的切入点,使其声明的返回值属于某种类型?

(我知道我可以得到pjp.proceed返回值并检查它的实例,但我想副歌)

共有1个答案

柴耀
2023-03-14

我已经复制了你的类,正如预期的那样,aspect只适用于getGreetingA,我无法复制你的情况,因为它们都是目标

您的示例中存在一些语法错误,下面是正确的代码:

 @Pointcut("execution (public String Hello.*(..))")
 @Around("pointcut()")
 类似资料:
  • 我在这里查过了https://github.com/Microsoft/TypeScript/blob/master/doc/spec.md这是TypeScript语言规范,但我找不到如何声明函数的返回类型。 我在下面的代码中展示了我所期望的: 我知道我可以用

  • 问题内容: 我们现在正在学习如何使用多个类,并且有一个项目要求创建一个包含a 和a的类,然后从主类中引用它以找到直径。此代码继续收到错误(标题中提到) 感谢您的帮助,-AJ 更新1 :好的,但是我不必将第三行声明为double,对吗?在我正在学习的书中,该示例没有做到这一点。 如您所见,该代码与我在我的代码中有什么不同?无论出于什么原因,本书的代码中都没有错误,但是我的说法是那里有错误。 问题答案

  • 问题内容: 我了解在创建这样的新对象时: 更通用,并且允许更多的可重用性,但是当创建tri时会发生以下情况: 由于Triangle是GeomObject的子类,因此tri还是不是GeomObject?声明的类型如何影响编译?谢谢 add:另一个问题:说我有 Integer n1 = new Integer(3); Object n2 = new Integer(4); System.out.pri

  • 问题内容: 在Java中,声明有两种有效形式: 在后者中,使用通配符。这种形式称为按需输入类型声明,但是它与前一种有何不同?是否还会导入的子包? 如果是Type( 例如 ,类)怎么办?将其所有内部类都导入吗? 问题答案: 仅导入立即嵌套的类型。该声明不是递归的。 这确实适用于用于导入内部类的类型,也适用于静态导入(用于导入方法)。

  • 我的TypeScript项目中有一个声明文件,如下所示: 这很好用,我可以在项目中的任何地方使用这个名称空间,而无需导入它。 我现在需要从第三方模块导入一个类型并在我的环境声明中使用它: 编译器现在抱怨它找不到名称空间“MyApp”,可能是因为导入阻止了它处于环境中。 是否有一些简单的方法可以在使用第三方类型的同时保留声明的环境性?

  • 我刚开始学Java。下面是我尝试在Intellij上运行的代码。我没想到下面的代码在执行时会有问题,因为我复制和粘贴的代码100%相似。从学习材料中可以看出,它应该工作得很顺利。我想知道这里出了什么问题?谢谢,我希望有人能向我澄清。