【发布时间】: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,看了一眼
MongoTemplateJavadoc,看起来该类不是 Spring bean/组件。这可以解释为什么您不能使用 Spring AOP 方面来定位它。除非您找到另一种方法来实现您的目标,否则您仍然可以切换到 Spring 控制的本机 AspectJ 并摆脱该限制。然后你的方面就会起作用。
标签: spring mongodb aspectj spring-data-mongodb spring-aop