【问题标题】:Spring aop intercept MongoTemplateSpring aop 拦截 MongoTemplate
【发布时间】:2020-11-16 08:15:48
【问题描述】:

MongoTemplate 类有一个嵌套类-QueryCursorPreparer。我的任务是拦截QueryCursorPreparer.getReadPreference() 方法。我怎么能这样做?尝试这样做时:

@Aspect
@Component
public class MongoInterceptor {

  @Around("execution(* org.springframework.data.mongodb.core.MongoTemplate.*(..))")
  public Object intercept(ProceedingJoinPoint joinPoint) throws Throwable {
    System.out.println("TEST");
    return joinPoint.proceed();
  }
}

没有任何东西被拦截

【问题讨论】:

  • 你最终想要达到什么目的?
  • 我的任务很简单,我想管理 ReadPreference 而不是从存储库级别。例如,我想对 RestController 进行分析来控制这个执行线程中的内容,读取将通过 Secondary 成员完成。为此,我想在 MongoTemplate 上编写一个拦截器,该拦截器将拦截 getReadPreference 方法并替换我需要的值,具体取决于此过程中是否存在注释。
  • @Dima,看了一眼MongoTemplate Javadoc,看起来该类不是 Spring bean/组件。这可以解释为什么您不能使用 Spring AOP 方面来定位它。除非您找到另一种方法来实现您的目标,否则您仍然可以切换到 Spring 控制的本机 AspectJ 并摆脱该限制。然后你的方面就会起作用。

标签: spring mongodb aspectj spring-data-mongodb spring-aop


【解决方案1】:

你配置好编译后编织了吗?由于您正在尝试建议第 3 方代码(您不拥有源代码)。也许这些可以帮助:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-21
    • 1970-01-01
    相关资源
    最近更新 更多