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

名称中包含特定单词的所有类的AeyJ切入点表达式

芮立果
2023-03-14

怎么了?各位!

我正在尝试拦截所有名称中包含特定单词的类...如下所示:

@Before("execution(* com.domain.model.*.*Repository.save(..))")

我有以下拦截方法

com.domain.model.user.UserRepository.save(User user);
com.domain.model.xpto.XPTORepository.save(XPTO xpto);
com.domain.model.foo.FooRepository.save(Foo foo);

我试过:(有效,但看起来很可怕)

@Before("execution(* *.save(..)) && within(com.domain.model..*)")
public void validateBeforeSave(final JoinPoint jp) throws Throwable {
    if (jp.getSignature().toString().contains("Repository.")) {
        ...
    }
}

谢谢!!!

共有1个答案

荣晨朗
2023-03-14

你自己的建议有什么问题?

execution(* com.domain.model.*.*Repository.save(..))

应该可以很好地与您提供的示例包类名配合使用。如果is不起作用,您的实际软件包名称不同,例如,您在型号下有多个子软件包。在这种情况下,可以使用使切入点更通用 构造,也用于丑陋的解决方法:

execution(* com.domain.model..*Repository.save(..))

或者,您的存储库类都继承自一个公共超类,或者实现相同的接口,例如接口com。领域模型存储库或抽象类com。领域模型BaseRepository。在这种情况下,您可以不进行字符串匹配,只使用以下内容

execution(* com.domain.model.Repository+.save(..))

execution(* com.domain.model.BaseRepository+.save(..))

意思是“这个类及其所有子类”。

 类似资料:
  • 我有一个特定包的工作代码,但我想为所有控制器、服务和dao包配置它,例如 com。abc。xyz。所容纳之物控制器 com。abc。xyz。所容纳之物服务 com。abc。xyz。所容纳之物道 com。abc。xyz。类别控制器 com。abc。xyz。类别服务 com。abc。xyz。类别dao公司 等等这是我的项目的基本包,有人可以帮助我如何去做它,使它适用于我的网络项目,包括控制器的所有类,

  • 我试图拦截所有在其包名中包含特定单词的类...如下所示: 我要拦截包中的所有类: 简而言之,我想拦截属于 我正努力让这项工作从过去的许多天。

  • 我有两个问题。第一)是如何包含两个字母之间带有点的单词,比如“C.J.Johnson”;第二)是是否可以创建包含点的单词列表,我的regex将包括它们?基本上,我想用单词搜索文本文件,并列出所有包含这些单词的句子。我的代码: 我认为第一个问题是可行的。Ive尝试将//s添加到

  • 如何使用PHP正则表达式检查字符串变量$str是否包含单词“cat”,但不包含单词“dog”。 案例1:$str=“我的宠物:鹦鹉”- 我尝试过这个方法,但我想知道是否有一个正则表达式可以做到这一点

  • 我对Xpath有问题。我试图查找div第一次迭代的所有文本节点,但排除其中包含关键字的节点。 一个简单的例子: 我想从第一个div“blabla”中获取所有文本,但排除所有包含“bananas”一词的段落。在这种情况下,我只想要“我也喜欢苹果”。段落数和单词“bananas”的位置是随机的。 以下是我尝试过的: 我不知道为什么这样不行。如果有人有想法,我们将不胜感激!

  • 问题内容: 我正在使用Python,并且想在遇到句号(句号)或空格之前匹配所有单词。 目前,我正在使用: 上面的代码不匹配任何内容。我需要作为我的输出。 问题答案: 如果您只是从字符串中获取子集,我不明白为什么要使用正则表达式。 运作方式相同: 例: 正则表达式速度慢,设计笨拙且难以调试。肯定有occassions使用它,但如果你只是要提取的文本和,然后我不认为是这些场合之一。 参见:https