【问题标题】:How to configure the pointcut expressions dynamically如何动态配置切入点表达式
【发布时间】:2022-08-06 15:56:50
【问题描述】:

我正在寻找可以通过从属性文件或数据库中读取来动态配置切入点表达式的问题的解决方案。

例如: @Around(\"执行(* com.example.updateUser(..))\")

在上面的示例中,我们对表达式进行了硬编码。 我正在寻找可以阅读的解决方案

执行(* com.example.updateUser(..)) 然后在 @Around 注释中使用它。

我在网上没有遇到类似的问题。 高度赞赏此类问题的任何解决方案。 谢谢!!

  • 没有;没有。你为什么还要这个?首先,这样做可能非常危险。
  • 为什么不遵循一个方法,默认情况下您已经对所有方法应用了切入点,并根据标志触发您围绕方法调用的逻辑,否则只需继续连接点?
  • 假设我想对某些 api 进行一些后/预处理,并且我希望这是可配置的。例如,我的微服务中有 5 个 API,我想根据某些配置对 5 个中的任何一个调用后/预处理。现在我希望用户也配置它。如果我有 5 个 MS,这可能很容易,但如果项目更大,则很难对其进行硬编码。这就是我试图使其可配置的原因。
  • 如果添加了一些新的 API,那么我也应该能够在一些新的 API 上应用配置。

标签: spring spring-boot spring-aop


【解决方案1】:

您可以使用schema-based AOP 并以经典的老式XML 样式定义切入点。 Spring XML 配置是在启动应用程序时读取的文本文件,因此可以满足您的要求。

如果您想手动将切入点连接到一个方面,您也可以这样做。是直接在应用程序中定义包含切入点的字符串变量或字段,还是从文本文件中读取切入点,完全取决于您。在 my answer here 中搜索术语 DefaultPointcutAdvisorAspectJExpressionPointcut ,位于“更新 2”和“更新 3”段落内的某处。在那里,您还可以找到完整示例项目的链接。

【讨论】:

    猜你喜欢
    • 2015-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多